2012-02-06 118 views
0

我在通過在我的實體上級聯saveupdate保存關聯方面存在問題。我有這個映射覆蓋,並想通過級聯保存它的一對多關聯,但這是行不通的。NHibernate級聯SaveUpdate

public class DomainMappingOverride : IAutoMappingOverride<Tcf.Domain.Entities.Domain> 
{ 
    /// <summary> 
    /// Overrides the specified mapping. 
    /// </summary> 
    /// <param name="mapping">The mapping.</param> 
    public void Override(AutoMapping<Tcf.Domain.Entities.Domain> mapping) 
    { 
     mapping.Table("domeinen"); 
     mapping.Map(m => m.Code, "code_1"); 
     mapping.Map(m => m.Description, "omschrijving"); 
     mapping.Map(m => m.Explanation, "toelichting"); 
     mapping.Map(m => m.CreatedBy, "createdby"); 
     mapping.Map(m => m.ModifiedBy, "modifiedby"); 
     mapping.Map(m => m.DateCreated, "createdat"); 
     mapping.Map(m => m.DateModified, "modifiedat"); 
     mapping.HasMany<SubDomain>(m => m.SubDomains).KeyColumn("domein").Cascade.SaveUpdate(); 
    } 
} 

對象本身被保存,但不是關聯,我做錯了什麼?

回答

0

我相信當您嘗試在已經有一個打開的事務的會話上啓動事務時,會出現此錯誤消息。我需要更多地瞭解會話包裝以提供更好的答案。

+0

好的,沒問題。我將編輯我的帖子並複製包裝代碼。 – 2012-02-07 06:41:02

+0

哪一個ForEach是它打破?我不得不說,你的方法似乎對我來說過於複雜。你不能用級聯完成同樣的事情嗎? – 2012-02-07 13:10:08

+0

你能向我解釋這個級聯的工作原理嗎?你有一個例子嗎? – 2012-02-07 16:39:43

0

問題出在我的AutoPersistenceModel世代。我的外鍵慣例不匹配。

它映射到DomainId,但SQL Server內部的列名是domein。