2012-02-06 11 views
0

私のエンティティにsaveupdateをカスケードして関連付けを保存する際に問題があります。このマッピングのオーバーライドがあり、それをカスケードすることで1対多の関連付けを保存したいのですが、これは機能しません。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

問題ありません。投稿を編集してラッパーコードをコピーします。 –

+0

どのForEachが壊れていますか?あなたのアプローチは私にとって非常に複雑すぎるようだと言わざるを得ない。カスケーディングを使って同じことを達成できませんか? –

+0

このカスケーディングの仕組みを私に説明できますか?例がありますか? –

0

問題は私のAutoPersistenceModel生成の中にありました。私の外国人キーコンベンションは一致しませんでした。

これはDomainIdにマッピングされていましたが、列名insinde SQLサーバーはdomeinです。

関連する問題