1

我从现有的空白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 目前支持的最新版本。有什么想法/解决方法可以使架构的创建工作吗?

4

1 回答 1

3

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

您需要先创建数据库(除非您使用由驱动程序自动创建的嵌入式数据库,但 SQL Server 并非如此)

于 2012-03-17T14:17:56.713 回答