Fluent NHibernate - автоматическое построение схемы

2

Хорошо, у меня есть база данных, но в ней нет таблиц. У меня есть классы сущностей. Я пытаюсь настроить 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
fluent-nhibernate

1 ответ

1
Лучший ответ

Я считаю, что сборка NHibernate.ByteCode.Castle используется для создания прокси-классов в NHibernate.

Я предполагаю, что когда вы пытались создать схему или конфигурацию, требовалась ссылка на генератор прокси. Поэтому добавление ссылки позволило устранить вашу проблему.

Вы можете немного прочитать про прокси NHibernate: http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx

  • 0
    Так почему же изменение пункта .Where привело меня к этому вопросу?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню