我从现有的空白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]
不退出”。事实上,令我惊讶的是,我的数据库中没有任何 db 模式的迹象AccountSystem
,这意味着根本没有创建模式和表。我正在使用 NHibernate 的 3.1 版本,这是 Fluent NHibernate 目前支持的最新版本。有什么想法/解决方法可以使架构的创建工作吗?