Nes*_*tor 5 c# entity-framework
我在实体框架代码优先项目中有以下删除方法:
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();
Run Code Online (Sandbox Code Playgroud)
这些是模型:
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; }
}
Run Code Online (Sandbox Code Playgroud)
当db.SaveChanges()被调用时,我得到一个异常:
DELETE 语句与 REFERENCE 约束“FK_Users_Groups”冲突。冲突发生在数据库“UserDB”、表“dbo.Users”、“Group_ID”列中。该语句已终止。
似乎以相反(随机)顺序调用 Remove 方法。如果我在之后添加另一个 ,它(显然)可以正常工作。db.SaveChanges()RemoveRange()
如何强制删除顺序?
您需要向 EF 传授表关系。然后它会自动为您排序 DML 操作。声明模型中的关系。例如,用户类应该有一个组属性。
这些属性在查询中也非常有用。不知道没有他们你是如何做到的。手动编写连接非常乏味。