如果父对象具有虚拟的所有属性,则实体框架6不保存导航对象(状态为未更改)

时间:2017-09-15 11:37:16

标签: c# entity-framework-6 virtual

我有以下课程:

 INSERT INTO tbl (file_id, data) SELECT file_id, data FROM tbl

和代码:

 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; }

    }

如果我从A类的属性ID中删除“virtual”,一切正常。我需要属性virtual才能在nhibernate中使用该模型。

感谢

1 个答案:

答案 0 :(得分:1)

我能够重现它,显然它是EF6的错误。

我可以建议2个解决方法。要么(1)也要所有 B成员virtual,要么(2)急切加载(懒惰和显式加载不会work)编辑之前的导航属性。

即。而不是

var a = dbSet.Find(1); // doesn't work

使用

var a = dbSet.Include(e => e.B).First(e => e.ID == 1); // works