FluentNHibernateによって次のように構成された既存の空のSQLServer2005データベースから始めています。
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を使用しています。これは、現在FluentNHibernateでサポートされている最新のものです。スキーマの作成を機能させるためのアイデア/回避策はありますか?