Я начинаю с существующей пустой базы данных 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.Какие-нибудь идеи / обходные пути, чтобы заставить создание схемы работать?