我有一個類,看起來像這樣:如何映射兩個在NHibernate中相互引用的對象?
public class Job
{
public Company Company {get;set;}
public Job JobForCompanyA {get;set;}
public Job JobForCompanyB {get;set;}
}
兩家公司的就業機會將相互引用,例如:
var jobA = new Job { Company = Company.CompanyA };
var jobB = new Job { Company = Company.CompabyB };
jobA.JobForCompanyB = jobB;
jobB.JobForCompanyA = jobA;
這樣做的問題是,如果我映射這些爲正常的多對一的NHibernate,它不能保存它們......因爲每個Job對象引用另一個,你將不得不保存一個獲得PK,但你不能因爲它引用了另一個(未保存的)工作,所以你有雞和雞蛋的問題。
從數據庫的角度來看,我可以做一個映射喬布斯用於公司A喬布斯,B公司是否有辦法沒有我不得不改變我的實體對象看起來如何映射這個使用NHibernate的映射表?我知道我可以添加列表屬性和黑客來完成它,就像一個普通的多對多關係一樣,但這必須是某人有更好解決方案的模式。
我用流利的NHibernate的,所以你可以給我用流利的NHibernate的NHibernate的或XML映射解決方案。
如果你有能力改變身份的東西,可以通過NHibernate的你(希洛,guid.comb等)來完成。 – anonymous 2009-07-24 19:54:13
我看不出如何解決問題。問題在於,現在數據庫表的設置方式,桌面上的FK永遠不會讓其中一個作業被保存,而沒有另一個作業的ID(這也不會被保存)。所以我想我需要改變我的數據庫模式。 – 2009-07-24 20:02:17