首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法删除Nhibernate Mappings中的外键约束

无法删除Nhibernate Mappings中的外键约束
EN

Stack Overflow用户
提问于 2013-05-14 15:41:37
回答 1查看 419关注 0票数 0
代码语言:javascript
复制
public class ReviewMap : ClassMapBase<Review>
    {
        public ReviewMap()
        {
            Table("Reviews");

            List(x => x.Objectives, m =>
            {
                m.Table("Objectives");
                m.Cascade(Cascade.All.Include(Cascade.DeleteOrphans));
                m.Key(k => k.Column("ReviewId"));
                m.Where("DeletionDate is null");
                m.OrderBy("OrderNo");
                m.Index(x => x.Column("OrderNo"));
                m.Inverse(true);
            }, m => m.OneToMany());
        }


public class ObjectiveMap : ClassMapBase<Objective>
    {
        public ObjectiveMap()
        {
            Table("Objectives");

            // Use "soft deletes" to allow us to capture results against deleted items
            Where("DeletionDate is null");
            SqlDelete("update Objectives set DeletionDate = getutcdate(), OrderNo = 1 where id=?");

            ManyToOne(x => x.Review, m =>
            {
                m.Column("ReviewId");
                m.NotNullable(true);
            });

            Property(x => x.Details, m =>
            {
                m.NotNullable(true);
                m.Length(1000);
                m.Column("Details");
            });

            Property("OrderNo", m =>
            {
                m.NotNullable(false);
            });

        }
    }

当我试图删除评论时,它给我的错误外键约束在目标表中。因为ReviewId是目标表中的外键。

你能建议一下问题出在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 15:58:04

您可以使用自定义sql-delete防止删除Objectives表中的内容,但也要求所有目标都有一个对Review行的引用。这应该如何工作呢?这也要求永远不要删除评论。

一种可行的方法是删除Objectives.ReviewId列上的外键约束,但我不建议这样做。由于删除的Review行的ID不能帮助您进行历史记录,因此更好的方法是使Objectives.ReviewId列可为空,并在自定义sql-delete中将其设为空。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16537611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档