Fluent NHibernate不会创建数据库模式

时间:2012-03-17 10:30:02

标签: nhibernate fluent-nhibernate db-schema

我开始使用现有空白 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`");
        ...
    }
}

我希望在数据库模式“AccountSystem”中创建User表,而不是默认的dbo模式,所以我假设在映射中添加Schema(...)会这样做

实际发生的是,当我尝试在User表上执行查询时,我收到了一个异常,说“对象[AccountSystem].[User]没有退出”。实际上,令我惊讶的是,我的数据库中没有名为AccountSystem的db模式的迹象,这意味着根本没有创建模式和表。我正在使用NHibernate的verion 3.1,这是目前最新的Fluent NHibernate支持。任何创建架构的想法/解决方法都有效吗?

1 个答案:

答案 0 :(得分:3)

Nibernate不会创建数据库,也不会创建用户模式;只有其中的表格结构。

您需要首先创建数据库(除非您使用由驱动程序自动创建的嵌入式数据库,但SQL Server不是这种情况)