我从一个 existing blank 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();
我有这张 Map :
public abstract class AccountSystemMapBase<T> : ClassMap<T>
{
protected AccountSystemMapBase()
{
Schema("`AccountSystem`");
}
}
public class UserMap : AccountSystemMapBase<User>
{
public UserMap() : base()
{
Table("`User`");
...
}
}
我希望在数据库模式"AccountSystem"中创建 User
表,而不是默认的 dbo
模式,所以我假设将 Schema(...)
添加到我的映射中会这样做 .
实际发生的是当我尝试在 User
表上执行查询时,我收到一个异常,说“对象 [AccountSystem].[User]
没有退出” . 实际上,令我惊讶的是,我的数据库中没有名为 AccountSystem
的db模式的迹象,这意味着根本没有创建模式和表 . 我正在使用NHibernate的verion 3.1,这是目前最新的Fluent NHibernate支持 . 任何创建架构的想法/解决方法都有效吗?
1 回答
Nibernate不会创建数据库,也不会创建用户模式;只有其中的表结构 .
您需要首先创建数据库(除非您使用由驱动程序自动创建的嵌入式数据库,但SQL Server不是这种情况)