简体   繁体   English

LINQ 到实体框架 - 级联删除 - 错误

[英]LINQ To Entity Framework - Cascade delete - Error

I have two related tables like this:我有两个这样的相关表:

Users用户

 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; }
    }

Oders订单

 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; }
    }

Now i want force entity framework to cascade delete user rows.现在我想强制实体框架级联删除用户行。
Here is codes for delete a user:以下是删除用户的代码:

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();
}

An here is error:这里是错误:

An error occurred while updating the entries.更新条目时出错。 See the inner exception for details.有关详细信息,请参阅内部异常。

Message = "The DELETE statement conflicted with the REFERENCE constraint "FK_Orders_Users". The conflict occurred in database "Crypto_DB", table "dbo.Orders", column 'User_ID'.\r\nThe statement has been terminated." Message = “DELETE 语句与 REFERENCE 约束“FK_Orders_Users”冲突。冲突发生在数据库“Crypto_DB”、表“dbo.Orders”、列“User_ID”中。\r\n语句已终止。”

How force entity framework for cascade delete?如何强制实体框架进行级联删除?

i think you need to remove first ref of users like in orders here one to many relation so according to my opinion first remove users in order and then save it to db and after that remove this user's row this may not be conflict我认为您需要删除第一个参考用户,例如此处的订单中的一对多关系,因此根据我的意见,首先按顺序删除用户,然后将其保存到数据库,然后删除该用户的行,这可能不会冲突

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM