【问题标题】:N Hibernate Session.Delete Foreign keyN Hibernate Session.Delete 外键
【发布时间】:2014-08-30 00:51:05
【问题描述】:

我的模型中有一个名为 Wftask 的模型,我有外键,这是地图

 Table("WfTask");
        Id(m => m.Id).Column("Id");
        Map(m => m.WfInstanceId);
        Map(m => m.OwnerGroupId);
        Map(m => m.Status);
        Map(m => m.DocId);
        Map(m => m.StepNo);
        Map(m => m.Comment).Length(500);
        Map(m => m.ActionDate);
        References(x => x.Action).Column("WfActionId").Cascade.All();
        References(x => x.WfState).Column("WfStateId").Cascade.All();
        References(x => x.WfTaskDetail).Column("WfTaskDetailId").Cascade.All();
        References(x => x.Owner).Column("OwnerId").ForeignKey("FK_Person_WfTask_OwnerId").Cascade.All();
        References(x => x.Actor).Column("ActorId").ForeignKey("FK_Person_WfTask_ActorId").Cascade.All();
        Map(m => m.ViewState);
        Map(m => m.Deleted);
        Map(m => m.Flag);
        References(x => x.WfVersionId).Column("WfVersionId").Cascade.All();
      //  HasManyToMany(x => x.PosibleActions).Table("WfPosibleActions").ChildKeyColumn("WfActionId").ParentKeyColumn("WftaskId");
        HasManyToMany(x => x.PosibleActions).Cascade.All().Table("WfPosibleActions").ChildKeyColumn("WfActionId").ParentKeyColumn("WftaskId");
    }

问题是当我想删除 wftask 对象时,Nhibernate Delete WfActionId 这是表 WfActions 和其他外键中的初级键,我如何更改我的地图以仅删除 wftask 和 wfposibleactiontable

【问题讨论】:

    标签: sql-server hibernate c#-4.0 nhibernate sql-delete


    【解决方案1】:

    您在many-to-one 关系上使用级联,映射为

    References(x => x.Action)
      .Column("WfActionId")
      .Cascade.All(); // that means, issue delete on current deletion
    

    但是那种类型的参考(除非在one-to-one事实上)不应该是.Cascade.All()。确实可能有其他项目(兄弟 wftasks) 引用相同的行/标识符

    要解决您的问题,请使用此级联:

    .Cascade.SaveUpdate();
    

    这应该符合您的预期(在AddUpdate 期间) - 除了删除。这应该单独、明确地完成......而不是通过映射

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2015-07-24
      • 2020-11-25
      • 2013-03-03
      • 2020-08-01
      相关资源
      最近更新 更多