モジュールを動的にロードできる動的WebサイトにNHibernateを使用しているため、sessionFactoryを構築する場合は、すべてのアセンブリを見つけて依存関係でソートする方法を使用し、作成したConfigurationインスタンスに追加してできます。ここで、構成タイプを hbm.xml ファイルから流暢に変更したいので、以下のコードを追加します。
sessionFactory =
Fluently
.Configure()
.Database(
FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008.ConnectionString(
c => c.FromAppSetting("connectionString")
)
)
.Mappings(
m => m.AutoMappings.Add(
AutoMap.Assemblies(
new FarayanConfig(),
assembliesArray
)
)
).BuildSessionFactory();
FarayanConfig は次のとおりです。
class FarayanConfig : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.Name.EndsWith("Entity");
}
public override bool IsVersion(FluentNHibernate.Member member)
{
return member.Name == "Version";
}
}
また、このコードによってロードされるアセンブリ内のクラスがあります (アセンブリは参照されず、動的にロードされることに注意してください)。ControlEntity という名前のクラスと別のクラス:
public class ControlEntityMap : ClassMap<ControlEntity>
{
public ControlEntityMap()
{
HasMany(x => x.Properties).Component(c => {
c.Map(v => v.Culture);
c.Map(v => v.Name);
c.Map(v => v.Value);
});
}
}
問題は ControlEntityMap のコンストラクターが実行されないことです! 私がしなければならないこと?