1

Я получаю следующее сообщение об ошибке во время выполнения в моем ASP.Net MVC приложении:ASP.Net MVC и NHibernate Барий и свободный NHibernate

NHibernate.MappingException: No persister for: MyProject.Model.MyDomainObject 

Я ссылающийся на норку и беглые двоичные файлы в моем приложении, и я реконфигурация норки в Global.asax на Application_Start следующим образом:

var bf = new BurrowFramework(); 
IFrameworkEnvironment fe = bf.BurrowEnvironment; 
Configuration cfg = fe.GetNHConfig("PersistenceUnit1"); 
cfg.AddMappingsFromAssembly(Assembly.LoadFrom(Server.MapPath("~/bin/MyProject.Data.dll"))); 
fe.RebuildSessionFactories(); 

Я не могу за жизнь мне понять это. Если я настрою свободный NHibernate AutoPersistenceModel с моими объектами домена, тогда все будет работать нормально, оно просто не работает для плавно настроенных карт вручную.

Единственная карта у меня есть выглядит следующим образом:

public class MyDomainObjectMap : ClassMap<MyDomainObject> 
{ 
    public MyDomainObjectMap() 
    { 
     WithTable("my_domain_object"); 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Description); 
    } 
} 

Любая помощь будет высоко ценится, пожалуйста, дайте мне знать, если вам нужно больше деталей.

Благодаря

ответ

0

Ok я получил его на работу, выполнив следующие действия:

var bf = new BurrowFramework(); 
IFrameworkEnvironment fe = bf.BurrowEnvironment; 
Assembly assembly = Assembly.LoadFrom(Server.MapPath("~/bin/MyProject.Data.dll")); 
Configuration cfg = fe.GetNHConfig("PersistenceUnit1"); 

Fluently.Configure(cfg) 
    .Mappings(m => m.FluentMappings.AddFromAssembly(assembly)) 
    .BuildConfiguration(); 

fe.RebuildSessionFactories(); 

Кто-нибудь знает, почему мой предыдущий подход не работает?

Благодаря

+0

В оригинальном посте вы просто называется cfg.AddMappingsFromAssembly, а не с использованием процесса Fluently.Configure в последнем. –

+0

Hi Jason, AddMappingsFromAssembly - это метод Fluent extension, который (предположил я) тянет плавные карты. – 2009-07-04 08:11:56

4

Чтобы ответить, почему ваш первоначальный подход потерпел неудачу, cfg.AddMappingsFromAssembly() просматривает целевой узел для предварительно сконфигурированных, внедренных файлов отображения XML, встроенных в сборку. Поскольку вы генерируете сопоставления «Свободно» во время выполнения, эти XML-файлы не существуют.

С другой стороны, следующее: отражает сборку для определения определенных «FluentMappings» (т. Е. Полученных из ClassMap <>), динамически генерирует отображение и вводит его в конфигурацию. Отображения не существует, пока вы не вызовете в FluentMappings.AddFromAssembly()

Fluently.Configure(cfg) 
    .Mappings(m => m.FluentMappings.AddFromAssembly(assembly)) 
Смежные вопросы