我有以下类:
public class A
{
[Key]
public virtual int ID { get; set; } //virtual here raises error!
public virtual B B { get; set; }
}
public class B
{
[Key]
public int ID { get; set; }
[Required]
public string title { get; set; }
}
和代码:
var context = new Model1();
var dbSet = context.Set<A>();
var dbSet1 = context.Set<B>();
var a = dbSet.Find(1);
var b = a.B;
b.title = DateTime.Now.Ticks.ToString();
int changes1 = context.SaveChanges();
if (changes1 == 0)
throw new Exception("not updated");
如果我从A类中的属性ID中删除"虚拟",则所有内容都在起作用。我需要虚拟的属性才能在Nhibernate中使用该模型。
谢谢
我能够复制它,显然是EF6错误。
我可以建议2个解决方法。要么(1)Make 所有 B
成员virtual
,或(2)急切的负载(懒惰和显式加载无效)在编辑它之前。<<<<<<<<<<。/p>
即。而不是
var a = dbSet.Find(1); // doesn't work
使用
var a = dbSet.Include(e => e.B).First(e => e.ID == 1); // works