次のように定義された 4 つのテーブルがあるとします。
プロジェクト: [ Project_Id, Project_Name ]
ベンダー: [ Vendor_Id, Vendor_Name ]
Project_Vendors : [ Project_Vendor_Id, Vendor_Id, Project_Id ]
支払い: [ Payment_Id, Project_Vendor_Id, Payment_Amount ]
関係は次のようになります。
- プロジェクトには多くのベンダーを関連付けることができます
- ベンダーは多くのプロジェクトに所属できます
- プロジェクトの多くのベンダーに対して多くの支払いを行うことができます(したがって、支払いを一意にするのはプロジェクトとベンダーです)
以下の ProjectVendors ルックアップ テーブルを使用して、Project オブジェクトと Vendor オブジェクト、およびそれらの関係を簡単にマップできます。
public class ProjectMapping : ClassMap<Project>
{
public ProjectMapping()
{
Table("Projects");
Id(x => x.Id).Column("Project_Id").GeneratedBy.TriggerIdentity();
HasManyToMany(x => x.Vendors).Table("Project_Vendors")
.ParentKeyColumn("Project_Id")
.ChildKeyColumn("Vendor_Id")
.Cascade.AllDeleteOrphan();
}
}
私の質問は、私のクラスが次のように定義されているかどうかです。
public class Payment
{
public virtual int? Id { get; set; }
public virtual Project Project { get; set; }
public virtual Vendor Vendor { get; set; }
public virtual double Amount { get; set; }
}
public class Project
{
public virtual int? Id { get; set; }
public virtual string Name { get; set; }
public virtual List<Vendor> Vendors { get; set; }
public virtual List<Payment> VendorPayments { get; set; }
}
ルックアップ テーブル Project_Vendors を使用して Project オブジェクトと Payment オブジェクトをマップするにはどうすればよいですか?