我有 2 个 POCO 课程(如下)并希望删除他们的两个记录之间的链接。根据这个EF 5.0 应该能够在不加载 User 类的情况下处理删除,如下所示:
context.Computers.Find("test").User = null;
context.SaveChanges();
这不起作用,但使用 .net 4 批准的方法它可以工作:
en = context.Computers.Find("test");
context.Entry(en).Reference(e => e.User).Load();
en.User = null;
context.SaveChanges();
我的 EF 参考是 EntityFramework.dll 版本 5.0.0.0。我在这里遗漏了一些明显的东西吗?
以下是课程:
public class Computer
{
public string Id { get; set; }
public Nullable<int> UserId { get; set; }
public virtual User User { get; set; }
}
public class User
{
public int Id { get; set; }
public virtual ICollection<Computer> Computers { get; set; }
}
编辑:这是上述链接文章中似乎与我看到的功能不一致的特定行:
要删除关系,请将导航属性设置为 null。如果您使用的是基于 .NET 4.0 的实体框架,则需要在将其设置为 null 之前加载相关端。例如:
context.Entry(course).Reference(c => c.Department).Load();
course.Department = null;
从基于 .NET 4.5 的 Entity Framework 5.0 开始,您可以将关系设置为 null 而无需加载相关端。