Хорошо, у меня есть база данных, но в ней нет таблиц. У меня есть классы сущностей. Я пытаюсь настроить Fluent NH на автоматизацию с автоматическим экспортом схемы.
Во-первых, это возможно, правильно?
Во-вторых, если да, то что я делаю неправильно здесь:
private ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c.Is(@"Data Source=foo;Initial Catalog=bar;Integrated Security=True")))
.Mappings(m => m.AutoMappings.Add(AutoPersistenceModel.MapEntitiesFromAssemblyOf<Employee>()
.Where(t => t.Namespace.Contains("Entities"))))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private void BuildSchema(Configuration cfg)
{
new SchemaExport(cfg).Create(false, true);
}
Я получаю сообщение об ошибке "Ссылка на объект не установлена в экземпляр объекта" в строке ".Where" выше. Если я выберу условие .Where, я получаю сообщение об ошибке "Операции с ограниченной привязкой не могут выполняться для типов или методов, для которых ContainsGenericParameters истинно".
EDIT:
Дополнительная информация: я изменил инструкцию .Where, чтобы указать, какие объекты включать. То есть "Где (t = > t.Name.Contains(" Employee ")" и т.д. Когда я это сделал, я получил сообщение об ошибке (NHibernate.ByteCode.Castle). Когда я решил, что он отлично работает Я все еще не понимаю, почему это работает.
Я считаю, что сборка NHibernate.ByteCode.Castle используется для создания прокси-классов в NHibernate.
Я предполагаю, что когда вы пытались создать схему или конфигурацию, требовалась ссылка на генератор прокси. Поэтому добавление ссылки позволило устранить вашу проблему.
Вы можете немного прочитать про прокси NHibernate: http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx