未保存外键的 EF7 值
EF7 value of foreign key not being saved
我使用的是 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;
}
自动生成的migration貌似没问题,从C到B增加了一个外键。
但是,当我执行以下操作时,没有值分配给数据库中的外键:
var a = _dbContext.A.Single(x => x.Id == id);
a.B = new B {
SomeValue = "SomeValue";
C = listOfC;
};
_dbContext.SaveChanges();
C 的实际值存储在相应的 table 中,但由于未保存外键,我无法再检索与 B 相关的值。
EF7 是否无法正确执行嵌套插入?有什么办法可以解决这个问题吗?
编辑:
显式声明外键使其不可为空,这意味着插入失败 ("bad foreign key constraint")。
将 B 中的 IEnumerable 更改为 ICollection 可解决问题:
class B {
public int Id;
public string SomeValue;
public virtual ICollection<C> C;
}
我使用的是 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;
}
自动生成的migration貌似没问题,从C到B增加了一个外键。 但是,当我执行以下操作时,没有值分配给数据库中的外键:
var a = _dbContext.A.Single(x => x.Id == id);
a.B = new B {
SomeValue = "SomeValue";
C = listOfC;
};
_dbContext.SaveChanges();
C 的实际值存储在相应的 table 中,但由于未保存外键,我无法再检索与 B 相关的值。
EF7 是否无法正确执行嵌套插入?有什么办法可以解决这个问题吗?
编辑: 显式声明外键使其不可为空,这意味着插入失败 ("bad foreign key constraint")。
将 B 中的 IEnumerable 更改为 ICollection 可解决问题:
class B {
public int Id;
public string SomeValue;
public virtual ICollection<C> C;
}