我使用实体框架代码创建一个网站 - 首先,用户可以销售许多产品:一对多 . 用户可以购买许多产品,许多用户可以购买产品:多对多 . 我一直收到错误:
System.Data.SqlClient.SqlException:'在表'UserProducts'上引入FOREIGN KEY约束'FK_dbo.UserProducts_dbo.Products_Product_ProductId'可能会导致循环或多个级联路径 . 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束 .
我确实希望级联删除以删除属于删除其帐户的用户的产品,或删除UserProduct表中属于已删除用户或已删除产品的记录 . 我究竟做错了什么?
这是User类:
public class User
{
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public ICollection<Product> Products { get; set; }
[InverseProperty("Users")]
public ICollection<Product> Cart { get; set; }
public User()
{
Products = new List<Product>();
Cart = new List<Product>();
}
}
这是Product类:
public class Product
{
[Key]
public int ProductId { get; set; }
public int OwnerId { get; set; }
public string Title { get; set; }
public string ShortDescription { get; set; }
public string LongDescription { get; set; }
public byte[] Picture1 { get; set; }
public byte[] Picture2 { get; set; }
public byte[] Picture3 { get; set; }
[ForeignKey("OwnerId")]
public User User { get; set; }
public ICollection<User> Users { get; set; }
public Product()
{
Users = new List<User>();
}
}
1 回答
首先,我需要在多对多关系用户到产品中为中间表编写一个类:
允许我禁止从此表删除级联到User表(覆盖上下文类中的OnModelCreating):
禁用级联工作原因是:
它解决了多个级联路径错误 .
删除用户仍会删除hes产品及其UserProducts,删除产品将删除其UserProducts .