gpt4 book ai didi

c# - Entity Framework 中的删除顺序不可预测

转载 作者:行者123 更新时间:2023-11-30 12:24:48 25 4
gpt4 key购买 nike

我在 Entity Framework Code First 项目中有以下删除方法:

var selectedID = selectedGroup.ID;
var users = (from user in db.Users
where user.Group_ID == selectedID
select user);
db.Users.RemoveRange(users);

db.Groups.Attach(selectedGroup);
db.Groups.Remove(selectedGroup);
db.SaveChanges();

这些是模型:

 public class Group
{
[Key]
public Guid ID { get; set; }

[Required]
public Guid Branch { get; set; }

}

public class User
{
[Key]
public Guid ID { get; set; }

[Required]
public Guid Group_ID { get; set; }

}

db.SaveChanges() 被调用时,我得到一个异常:

The DELETE statement conflicted with the REFERENCE constraint "FK_Users_Groups". The conflict occurred in database "UserDB", table "dbo.Users", column 'Group_ID'. The statement has been terminated.

似乎以相反(随机)的顺序调用 Remove 方法。如果我在 RemoveRange() 之后添加 另一个 db.SaveChanges(),它(显然)工作正常。

如何强制删除命令?

最佳答案

您需要教 EF 表关系。然后它将自动为您排序 DML 操作。声明模型中的关系。例如,用户类应该有一个组属性。

这些属性在查询中也非常有用。不知道如果没有他们你是如何做到的。手动编写连接很乏味。

关于c# - Entity Framework 中的删除顺序不可预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com