Я создаю веб-сайт, используя код Entity Framework, где: пользователь может продавать много продуктов: один ко многим. пользователь может покупать много продуктов, а продукты могут покупать многие пользователи: многие ко многим. я продолжаю получать ошибку:
System.Data.SqlClient.SqlException: «Введение ограничения FOREIGN KEY «FK_dbo.UserProducts_dbo.Products_Product_ProductId» в таблице «UserProducts» может вызвать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.
я хочу, чтобы каскадное удаление удаляло продукты, принадлежащие пользователю, который удалил свою учетную запись, или удалял записи из таблицы UserProduct, принадлежащие удаленному пользователю или удаленному продукту. Что я делаю неправильно?
это класс пользователя:
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>();
}
}
это класс продукта:
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>();
}
}
User
,UserProduct
можно удалить через (1)User
->UserProduct
или (2)User
->Product
->UserProduct
, следовательно, несколько каскадных путей. - person Ivan Stoev   schedule 07.04.2018