1
我开始与现有空白 SQL Server 2005数据库,通过FluentNHibernate以下方式配置:功能NHibernate不创建数据库模式
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
的数据库架构的标志,这意味着模式和表格根本就没有创建。我正在使用NHibernate的verion 3.1,这是目前最新的流利NHibernate支持。任何想法/解决方法,以使模式的创建工作?
我创建的数据库(如我已经写在开头我的帖子,我在一个空白数据库执行模式),我需要NHibernate创建它的数据库模式。我也重新考虑清楚。尽管如此,它可能是NHibernate不创建模式 – 2012-03-17 15:13:01
修改我的答案来解决这个问题。它也不会创建用户模式。 – 2012-03-17 16:45:23
谢谢,看来我必须将它们添加到数据库创建脚本中。 – 2012-03-17 17:28:37