【发布时间】:2022-01-12 11:14:28
【问题描述】:
我有两个这样的相关表:
用户
public partial class Users
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Users()
{
this.Orders = new HashSet<Orders>();
}
public int ID { get; set; }
public int UserType_ID { get; set; }
public string Email { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Orders> Orders { get; set; }
public virtual UserTypes UserTypes { get; set; }
}
订单
public partial class Orders
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Orders()
{
this.Payments = new HashSet<Payments>();
}
public int ID { get; set; }
public int User_ID { get; set; }
public int Plan_ID { get; set; }
public System.DateTime Date { get; set; }
public int OrderStatus_ID { get; set; }
public virtual OrderStatus OrderStatus { get; set; }
public virtual Plans Plans { get; set; }
public virtual Users Users { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Payments> Payments { get; set; }
}
现在我想强制实体框架级联删除用户行。
这是删除用户的代码:
using (Crypto_Shuffler_Entities entities = new Crypto_Shuffler_Entities())
{
var users = from User in entities.Users
where User.Email.ToLower() == "test@gmail.com"
select User;
entities.Users.Remove(users.FirstOrDefault());
entities.SaveChanges();
}
这里有错误:
更新条目时出错。查看内部异常 了解详情。
Message = "DELETE 语句与 REFERENCE 冲突 约束“FK_Orders_Users”。数据库发生冲突 “Crypto_DB”、表“dbo.Orders”、“User_ID”列。\r\n 语句已终止。”
如何强制实体框架进行级联删除?
【问题讨论】:
-
你似乎在使用数据库优先,这意味着他数据库中的 FK 应该有一个级联规范。
-
@Gert Arnold sql server 中哪个选项可以定义级联?
-
把你的评论作为答案。
标签: c# webforms entity-framework-6 cascading-deletes