外键的EF7值未保存

时间:2017-03-01 16:01:30

标签: c# entity-framework asp.net-core-1.0

我正在使用EF7,我有三个实体:

class A {
    public int Id;
    public B B;
}


class B {
    public int Id;
    public string SomeValue;
    public virtual IEnumerable<C> C;
}

public class C {
    public int Id;
    public string SomeValue;
    public virtual B B;
}

自动生成的迁移似乎很好,并且从C到B添加了外键。 但是,当我执行以下操作时,没有为数据库中的外键分配值:

var a = _dbContext.A.Single(x => x.Id == id);
a.B = new B {
    SomeValue = "SomeValue";
    C = listOfC;
};
_dbContext.SaveChanges();

C的实际值存储在相应的表中,但由于未保存外键,我无法再根据B检索它。

EF7无法正确执行嵌套插入吗?有办法解决这个问题吗?

修改 显式声明外键使其不可为空,这意味着插入失败(“错误的外键约束”)。

1 个答案:

答案 0 :(得分:0)

将B中的IEnumerable更改为ICollection可解决此问题:

class B {
    public int Id;
    public string SomeValue;
    public virtual ICollection<C> C;
}