2
私は2つのテーブルを持って、お店や部門を言うことができます。 [OK]を流暢NHibernateはマッピング問題
ShopTable
ShopId
ShopName
DepartmentTable
DepartmentId
ShopId
Name
Type
は、今私はクラス
public class Shop
{
public virtual int ShopId {get; set;}
public virtual string ShopName {get; set;}
public virtual Department Toys { get; set; }
public virtual Department Hardware { get; set; }
public virtual Department Food { get; set; }
}
public class Department
{
public virtual int DepartmentId { get; set; }
public virtual int ShopId { get; set; }
public virtual string Name { get; set; }
public virtual DepartmentType Type { get; set; }
}
がどのように私はおもちゃのハードウェアや食品をマッピングん店にshoptableマップ?
public class ShopMap : ClassMap<Shop>
{
Id(x => x.ShopId);
Map(x=> x.ShopName);
// How do I map these according to the DepartmentType enum?
Map(x=> x.Toys);
Map(x=> x.Hardware);
Map(x=> x.Food);
}
public class DepartmentMap : ClassMap<Department>
{
Id(x => x.DepartmentId);
Map(x=> x.ShopId);
Map(x=> x.Name);
Map(x=> x.Type);
}
いや、私は、リストなどのオブジェクトを持つことができることを知っている、しかし、あなたはそれがにISNと言いますどのようにしてもそれらを別々のオブジェクトとして持つことは可能ですか?彼らは、リストにある場合、私は、リストにループに、私はそれらのいずれかにアクセスするたびに持っているだろうから は、私にかなり役立つだろう。 – TuomasK
あなたが望む特定の部門のコレクションを検索することは避けられません。推薦されたクラスはNHibernateがあなたのテーブル構造のための正しいSQLを生成することを可能にします。クラスのプロパティまたはメソッドのいずれかでコレクションの特定のクエリをカプセル化することができます。これらのメソッドやプロパティはNHibernateにマップされないため、データベース操作には影響しません。例えば:公共部門トイ{取得{Departments.FirstOrDefault(D => d.DepartmentId == ToysDepartmentId)。 }} –
コレクションでは、このようにすることができるので少し奇妙です。 。hasManyの(X => x.Departments).KeyColumn( "ShopId")ここで、(Y => y.Type == DepartmentType.Toys)。 – TuomasK