NHibernate级联存储更新

NHibernate级联存储更新,nhibernate,transactions,sessionfactory,Nhibernate,Transactions,Sessionfactory,我在通过级联实体上的saveupdate保存关联时遇到问题。我有这个映射覆盖,并希望通过级联保存它的一对多关联,但这不起作用 public class DomainMappingOverride : IAutoMappingOverride<Tcf.Domain.Entities.Domain> { /// <summary> /// Overrides the specified mapping. /// </summary>

我在通过级联实体上的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();
    }
}
公共类DomainMappingOverride:IAutoMappingOverride
{
/// 
///重写指定的映射。
/// 
///地图。
公共无效替代(自动映射)
{
映射表(“domeinen”);
Map(m=>m.Code,“Code_1”);
Map.Map(m=>m.Description,“omschrijving”);
Map.Map(m=>m.explation,“toelichting”);
Map(m=>m.CreatedBy,“CreatedBy”);
Map(m=>m.ModifiedBy,“ModifiedBy”);
Map(m=>m.DateCreated,“createdat”);
Map(m=>m.DateModified,“modifiedat”);
mapping.HasMany(m=>m.SubDomains).KeyColumn(“domein”).Cascade.SaveUpdate();
}
}

对象本身已保存,但关联未保存,我做错了什么?

我相信,当您尝试在已打开事务的会话上启动事务时,会出现此错误消息。我需要更多地了解您的会话包装器,才能给出更好的答案。

问题出在我的AutoPersistenceModel生成过程中。我的外键约定不匹配


它映射到DomainId,但Inde SQL server中的列名是domein。

Ok,没问题。我将编辑我的帖子并复制包装器代码。它是在哪个ForEach上破译的?我不得不说你的方法对我来说太复杂了。你不能用级联来完成同样的事情吗?你能给我解释一下级联是如何工作的吗?你有一个例子吗?我发现了级联选项,它工作得很好!我刚刚开始使用NHibernate,我已经认为保存关联是一件痛苦的事情,但现在很容易:-)。我将在服务器上尝试它,看看它现在是否工作……它在服务器上工作,但他不保存关联。