删除订单在Entity Framework中是不可预测的

时间:2015-09-30 13:06:57

标签: c# entity-framework

我在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()时,我得到一个例外:

  

DELETE语句与REFERENCE约束冲突   " FK_Users_Groups&#34 ;.冲突发生在数据库" UserDB",表中   " dbo.Users",column' Group_ID'。声明已经终止。

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

如何强制删除命令?

1 个答案:

答案 0 :(得分:2)

你需要教EF表关系。然后它会自动为您订购DML操作。声明模型中的关系。例如,用户类应该具有组属性。

这些属性在查询中也非常有用。没有它们,不确定你是如何做到的。手动编写连接是乏味的。