2010-03-28 4 views
0

В моих поисках дальнейшего знания, я пытаюсь запустить NHibernate.NHibernate: No persister error

У меня есть следующая структура в моем решении проекта

  • Инфраструктура Библиотека классов Проект
  • MVC Application Project
  • Test

    • Библиотека Основной класс проекта

    В моей Основной проект Я создал следующий объект:

    using System; 
    
    namespace Core.Domain.Model 
    { 
        public class Category 
        { 
         public virtual Guid Id { get; set; } 
    
         public virtual string Name { get; set; } 
        } 
    } 
    

    В моих инфраструктурах проекта у меня есть следующее отображение:

    <?xml version="1.0" encoding="utf-8" ?> 
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
         namespace="Core.Domain.Model" 
         assembly="Core"> 
    
        <class name="Category" table="Categories" dynamic-update="true"> 
        <cache usage="read-write"/> 
        <id name="Id" column="Id" type="Guid"> 
         <generator class="guid"/> 
        </id> 
        <property name="Name" length="100"/> 
        </class> 
    </hibernate-mapping> 
    

    С следующим конфигурационным файлом:

    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
        <session-factory> 
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
        <property name="connection.connection_string">server=xxxx;database=xxxx;Integrated Security=true;</property> 
        <property name="show_sql">true</property> 
        <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> 
        <property name="cache.use_query_cache">false</property> 
        <property name="adonet.batch_size">100</property> 
        <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
        <mapping assembly="Infrastructure" /> 
        </session-factory> 
    </hibernate-configuration> 
    

    В моем тестовом проекте, я следующее испытание

    [TestMethod] 
         [DeploymentItem("hibernate.cfg.xml")] 
         public void CanCreateCategory() 
         { 
          IRepository<Category> repo = new CategoryRepository(); 
          Category category = new Category(); 
          category.Name = "ASP.NET"; 
    
          repo.Save(category); 
    
         } 
    

    Я получаю следующее сообщение об ошибке при попытке запустить тест:

    Метод испытания Волонтер.Tests.CategoryTests.CanCreateCategory выбрасывает исключение: NHibernate.MappingException: Нет persister для: Core.Domain.Model.Category.

    Любая помощь была бы принята с благодарностью. У меня есть действие сборки cfg, установленное для встроенного ресурса.

    Спасибо!

  • ответ

    0

    Моделировочного Действие файла отображения XML должно быть установлено в Embedded Resource в Infrastructure сборке. Когда вы используете следующую команду в своем файле конфигурации: <mapping assembly="Infrastructure" />, она будет искать сопоставления в виде встроенных ресурсов в этой сборке.

    +0

    Я сделал это и скопировал один и тот же файл конфигурации в свою тестовую сборку (которая также установлена ​​на встроенный ресурс) – Mike

    +1

    Вам не нужно вставлять файл конфигурации, а только сопоставление. –

    +0

    Вот и все. Не могу поверить, что я его не замечал. Спасибо за вашу помощь! – Mike

    0

    Я предполагаю, что проблема в том, что ваш настройке SessionFactory в тестовой сборке, не говоря это, что ваши отображения в вашей сборке ядра, что-то вроде

    ISessionFactory factory = new Configuration().Configure() 
        .AddAssembly(typeof(Category).Assembly) <========*** 
        .BuildSessionFactory(); 
    

    Если это не поможет, опубликовать конфигурацию код.

    Приветствие,
    Berryl

    +0

    Я не знаю, где добавить этот код точно в мою тестовую сборку. Я следую учебнику, найденному здесь http://forerunnerg34.wordpress.com/2009/11/03/using-asp-net-mvc-and-nhibernate-part-1/ и просматривая загруженные исходные файлы с сайта , Я не вижу ничего подобного, как вы писали. Thank – Mike

    Смежные вопросы