【发布时间】:2014-04-11 01:13:01
【问题描述】:
例如。有一个名为 A 的类。
public class A
{
[Key]
[Required]
public virtual Guid Id {get;set;}
[Required]
public virtual string Name {get;set;}
[Required]
public virtual B B {get;set;}
}
当我调用这个方法时,它会抛出 B 不能为空的异常。
public void Edit(Guid id, string name)
{
A a = _DbSet.Find(id);
a.Name = name;
_DbContext.SaveChanges();
}
但这会成功。
public void Edit(Guid id, string name)
{
A a = _DbSet.Find(id);
a.Name = name;
B b = a.B;
_DbContext.SaveChanges();
}
这是实体框架的错误吗?
我在 6.1 版本中使用它。
======================================
我发现一个规律,如果一个属性链接到一个实体并且它没有从数据库中加载,那么当你调用SaveChanges()时它会抛出异常
【问题讨论】:
-
您正在从数据库中获取实体 A,然后编辑 name 属性,然后尝试保存。在这两种情况下,您从数据库中获取的实体 A 的数据库是否完整?
-
是的,它们完好无损。而且这个异常抛出没有规律。但是如果一个方法抛出异常,它总是会抛出异常。
标签: entity-framework lazy-loading