首页 > 其他 > 详细

EF Core 遇到“可能会导致循环或多重级联路径”

时间:2019-04-21 15:41:01      阅读:467      评论:0      收藏:0      [点我收藏+]

在ef core中你可能会设计这样一个实体:

public class Customer : Entity,IMustHaveTenant, IHasCreationTime
{
        public Customer()
        {this.ChildrenCustomers = new List<Customer>();
        }
     
     //……
  
/// <summary> /// 父级顾客 /// </summary> public int? ParentCustomerId { get; set; }
#region 导航属性 /// <summary> /// 父顾客 /// </summary> public virtual Customer ParentCustomer { get; set; } /// <summary> /// 孩子顾客 /// </summary> public virtual ICollection<Customer> ChildrenCustomers { get; set; } #endregion }

意思就是:一个顾客可能有上级顾客,同时也可能有多个孩子顾客。

当我们在进行数据迁移的时候会报错:

将 FOREIGN KEY 约束 ‘******‘ 引入表 ‘Customers‘ 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
无法创建约束或索引。请参阅前面的错误。

 

你可能需要这样配置来解决这个问题:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            string tableNamePrefix = "WXShop_";
           
            var customer = modelBuilder.Entity<Customer>();
            customer.ToTable(tableNamePrefix + "Customers");
            customer
                .HasMany(t => t.ChildrenCustomers)
                .WithOne(t => t.ParentCustomer)
                .HasForeignKey(t => t.ParentCustomerId)
                .OnDelete(DeleteBehavior.Restrict);       

            base.OnModelCreating(modelBuilder);
        }

 

EF Core 遇到“可能会导致循环或多重级联路径”

原文:https://www.cnblogs.com/ycb715/p/10745303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!