Свободный NHibernate не создает схемы базы данных - PullRequest
1 голос
/ 17 марта 2012

Я начинаю с существующей пустой базы данных SQL Server 2005, настроенной FluentNHibernate следующим образом:

ISessionFactory nhibernateSessionFactory = Fluently
    .Configure()
    .Mappings(m => assemblies.ForEach(asm => m.FluentMappings.AddFromAssembly(asm)))
    .Database(
        MsSqlConfiguration.MsSql2005
            .ShowSql()
            .ConnectionString(DatabaseConfig.Instance.ConnectionString))
    .ExposeConfiguration(c => new SchemaUpdate(c).Execute(true, true))
    .BuildSessionFactory();

У меня есть эта карта:

public abstract class AccountSystemMapBase<T> : ClassMap<T>
{
     protected AccountSystemMapBase()
     {
         Schema("`AccountSystem`");
     }
}

public class UserMap : AccountSystemMapBase<User>
{
    public UserMap() : base()
    {
        Table("`User`");
        ...
    }
}

Я хочу, чтобы таблица User создавалась внутри схемы базы данных "AccountSystem" вместо схемы по умолчанию dbo, поэтому я предположил, что добавление Schema(...) к моему отображению сделает это.

На самом деле произошло то, что, когда я пытался выполнить запрос к таблице User, я получил исключение, говоря: «объект [AccountSystem].[User] не завершается».Действительно, к моему удивлению, в моей базе данных не было никаких признаков схемы базы данных с именем AccountSystem, означающей, что схема и таблицы не были созданы вообще.Я использую verion 3.1 из NHibernate, который в настоящее время является последним, который поддерживается Fluent NHibernate.Какие-нибудь идеи / обходные пути, чтобы заставить создание схемы работать?

1 Ответ

3 голосов
/ 17 марта 2012

Nibernate не создает базы данных и пользовательские схемы; только структуры таблиц внутри них.

Сначала необходимо создать базу данных (если только вы не используете встроенные базы данных, которые автоматически создаются драйвером, но это не относится к SQL Server)

...