ฉันมีตาราง เรียก A กันดีกว่า A มีช่อง - objId
มีตารางอื่นๆ ให้เรียก B, C และ D ซึ่งมีรายการระเบียน A จำเป็นต้องสร้างบันทึกโดยการเพิ่มบันทึก A ลงในรายการบันทึก A ของหนึ่งในตาราง B, C และ D ฟิลด์ objId จะต้องเป็น PK (id) ของบันทึก B/C/D ใครมีรายการ ของ A.
ซึ่งหมายความว่า - objId คือ FK สำหรับหลาย ๆ ตาราง ฉันเริ่มต้นด้วยตาราง B แต่หลังจากที่ตาราง B สร้างฟิลด์ objId ของตาราง A ที่สร้างขึ้น และตอนนี้จะเป็นอย่างไรกับโต๊ะ C และ D? พวกเขาไม่สามารถสร้างคอลัมน์ objId ในตารางได้
รหัสคือ:
<id name="Id">
<generator class="guid" />
</id>
<bag name="As" cascade="All">
<key column="ObjId" />
<one-to-many class="A" />
</bag>
<class name="A">
<id name="Id">
<generator class="guid" />
</id>
<property name="ObjId" />
public class B
{
public virtual Guid Id { get; set; }
public virtual IList<A> As{ get; set; }
}
public class A
{
public virtual Guid Id { get; set; }
public virtual string ObjId { get; set; }
}
เพิ่มบันทึก A ให้กับ B:
this.Update(session =>
{
var bRecord = ....;
bRecord.As.Add(new ARecord {
...
});
session.Update(bRecord);
});
ฉันจะต้องสร้างการเชื่อมโยงที่ถูกต้องได้อย่างไร?