0
我知道,我知道已經存在許多像這樣的問題,但我不知道如何解決此問題我的場景。ef core 2 - 在表'Y'中引入FOREIGN KEY約束'X'可能會導致循環或多個級聯路徑
我有一個客戶和一個有賣家,一個客戶沒有必要是賣家,但所有賣家是客戶。
在我爲了我有一個客戶和賣家,但賣家已經有一個custumer內他
這是我的客戶實體
public class Customer : BaseEntity
{
public Customer(Name name, DateTime? birthDay, Email email, string password, List<CreditDebitCard> creditDebitCards = null)
{
[...]
}
public Name Name { get; private set; }
public DateTime? BirthDay { get; private set; }
public Email Email { get; private set; }
public string Password { get; private set; }
public int? CreditDebitCardId { get; private set; }
public ICollection<CreditDebitCard> CreditDebitCards => _CreditDebitCards;
public IEnumerable<Order> Orders { get; private set; }
[...]
}
我賣方實體
public class Seller : BaseEntity
{
public Seller(string schoolName, string cardIdPath, string identityNumber, int customerId)
{
[...]
}
public string SchoolName { get; private set; }
public string CardIdPath { get; private set; }
public string IdentityNumber { get; private set; }
public Customer Customer { get; private set; }
public int CustomerId { get; private set; }
public IEnumerable<Order> Orders { get; private set; }
}
我的訂單實體
public class Order : BaseEntity
{
public Order(IList<OrderItem> orderItems, int customerId, int sellerId)
{
[...]
}
#region Fields
private IList<OrderItem> _orderItems;
#endregion
#region Properties
public int SellerId { get; private set; }
public Seller Seller { get; private set; }
public int CustomerId { get; private set; }
public Customer Customer { get; private set; }
public EOrderStatus Status { get; private set; }
public ICollection<OrderItem> OrderItems
{
get { return _orderItems; }
private set { _orderItems = new List<OrderItem>(value); }
}
public decimal Total => GetTotal();
#endregion
[...]
}
我OrderMap
public static class OrderMap
{
public static EntityTypeBuilder<Order> Map(this EntityTypeBuilder<Order> cfg)
{
cfg.ToTable("ORDER");
cfg.HasKey(x => x.Id);
cfg.Property(x => x.CreationDate).IsRequired();
cfg.Property(x => x.IsActive).IsRequired();
//cfg.Property(x => x.Discount).HasColumnType("money");
cfg.Property(x => x.Status).IsRequired();
cfg.HasMany(x => x.OrderItems);
cfg.HasOne(x => x.Customer);
cfg.HasOne(x => x.Seller).WithMany(b => b.Orders).OnDelete(DeleteBehavior.ClientSetNull);
return cfg;
}
}
我已經添加遷移,但是當我將「更新數據庫」我收到此錯誤信息:
引進國外KEY 'Order'表上的約束'FK_Order_Seller_SellerId'可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。 無法創建約束或索引。查看以前的錯誤。
這是一個.netcore2.0項目,我使用的是EF-核心2
你的代碼示例是不是很清楚。你寫的map函數看起來不像ef core 2.0。 –