NHibernateはエンティティ内の特定の型の複数のIListを自動マッピングできないようです。Fluent NHibernate Automappingをエンティティの同じタイプの複数のリストでどのように使用できますか?
は(流暢NHibernateはソースコードに含まれているExamples.FirstProjectサンプルコードに基づく)、次の2つのエンティティを考えます。
public class Employee
{
public virtual int Id { get; private set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
public class Store
{
public virtual int Id { get; private set; }
public virtual IList<Employee> Staff { get; set; }
public virtual IList<Employee> Managers { get; set; }
}
これは完全に有効なオブジェクトモデルであると思われます。各ストアには、複数の職員と複数の従業員がいます。
しかし、ときに私はオートマップ、スタッフやマネージャーリストがすべて同じ外部キーで、Employeeテーブルに格納されています。
Employee Table
Id FirstName LastName Store_id
3 Daisy Harrison 1
4 Jack Torrance 1
5 Sue Walkters 1
6 Tom Tommorow 1
7 Dick Diggler 1
正味の結果は、データがデータベースから読み戻されたとき、スタッフと管理者の両方のリストがテーブルのすべての行が移入されていることです。
これは私に自動マッピングのバグのように見えますが、私はどのような形態でNHibernateのにかなり新たなんだ、と完全にそれはまだ限界だか分かりません。いずれの場合においても
、はどのように私はNHibernateのは明確なように2つのリストを扱うことができますか?
可能であれば、私が提供したサンプルコード(「この正確なオーバーライドをCreateSessionFactoryの.Mappingsセクションに入れてください」など)に直接対応するAutomappingコードの断片に感謝します。
私はまだ非常によく、「空白を埋める」ことができないことを意味している、物事の古いやり方に慣れて自動マッピングでのみ多少馴染み、そしてまったくだからです。
しかし、私に正しい方向に向けるだけの時間があれば、それも参考になります。
ここに私のCreateSessionFactoryコードは、いくつかのコンテキストを与えるために、です:
private static ISessionFactory CreateSessionFactory()
{
ISessionFactory sessionFactory = null;
const string autoMapExportDir = "AutoMapExport";
if(!Directory.Exists(autoMapExportDir))
Directory.CreateDirectory(autoMapExportDir);
try
{
var autoPersistenceModel =
AutoMap.AssemblyOf<Product>()
.Where(t => t.Namespace == "Examples.FirstProject.Entities")
.Conventions.Add(DefaultCascade.All())
;
sessionFactory = Fluently.Configure()
.Database(SQLiteConfiguration.Standard
.UsingFile(DbFile)
.ShowSql()
)
.Mappings(m => m.AutoMappings.Add(autoPersistenceModel)
.ExportTo(autoMapExportDir)
)
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory()
;
}
catch (Exception e)
{
Console.WriteLine(e);
}
return sessionFactory;
}