在我的項目中,我使用NHibernate/FluentNHibernate,並且我正在使用兩個實體,合同和服務。nhibernate/fluenthibernate拋出StackOverflowException
這是我的合同類型:
[Serializable]
public partial class TTLCContract
{
public virtual long? Id { get; set; }
// other properties here
public virtual Iesi.Collections.Generic.ISet<TTLCService> Services { get; set; }
// implementation of Equals
// and GetHashCode here
}
,這是我的服務類型:
[Serializable]
public partial class TTLCService
{
public virtual long? Id { get; set; }
// other properties here
public virtual Activity.Models.TTLCContract Contract { get; set; }
// implementation of Equals
// and GetHashCode here
}
好了,所以你可以看到,我想我的合同對象有許多服務,每個服務需要參考父合同。
我正在使用FluentNhibernate。所以,我的映射文件如下:
public TTLCContractMapping()
{
Table("tab_tlc_contracts");
Id(x => x.Id, "tlc_contract_id");
HasMany(x => x.Services)
.Inverse()
.Cascade.All()
.KeyColumn("tlc_contract_id")
.AsSet();
}
和
public TTLCServiceMapping()
{
Table("tab_tlc_services");
Id(x => x.Id, "tlc_service_id");
References(x => x.Contract)
.Not.Nullable()
.Column("tlc_contract_id");
}
這裏來我的問題:如果我檢索了數據庫中的所有合同的列表,它的工作原理。如果我檢索給定合同中所有服務的列表,我會得到一個StackOverflowException ...。
您是否看到我寫的內容有錯? 我犯了什麼錯誤嗎?
如果您需要任何其他信息,請讓我知道。
哦,是的,我錯過了......看着堆棧跟蹤我看到系統正在加載所有服務,然後它再次加載與這些服務有關的合同。
我真的沒有必要的經驗,也沒有想法瞭解發生了什麼事情..所以任何幫助將真的很棒!
在此先感謝, 乾杯, Gianluca。
你真的需要那裏的逆向嗎? – 2010-05-19 17:07:53
那麼,這是我爲了嘗試排除這個問題而提出的。正如我所說,我用完了想法:/哦,也..我沒有它得到一個不同的異常,所以我想它是需要的...在表tab_services有一個對合同的引用(因此,tab_tlc_services。 tlc_contract_id),所以我想我可能會在那裏..但正如我前面所說,我接受專家的建議... – 2010-05-19 17:18:21
你能發佈完整的異常('ex.ToString()')嗎? – 2010-05-20 00:44:28