我有一些POCO对象,看起来像这样:
public class Foo
{
public int Id { get; set; }
public string FooProperty { get; set; }
public int BarId { get; set; }
public virtual Bar Bar { get; set; }
}
public class Bar
{
public int Id { get; set; }
public string BarProperty { get; set; }
public int FooId { get; set; }
public virtual Foo Foo { get; set; }
}
每个Foo对象只有一个Bar(反之亦然)。
现在我想创建一对新的Foo/Bar对象。所以我这样做(这就是我怀疑我错了的地方):
var foo = new Foo() { FooProperty = "hello" };
dbContext.Foos.Add(foo);
var bar = new Bar() { BarProperty = "world" };
foo.Bar = bar;
dbContext.SaveChanges();
正如你可能知道的,我希望是因为我“添加”了
foo
然后
bar
也会被添加,因为它是同一对象图的一部分,但不是:它没有被添加
FooId
的
Bar
在调用后更新的对象
SaveChanges
(尽管
Id
Foo对象的
是
更新)。
所以,我的猜测是,这种行为是因为我处理的是POCO,而不是EF代理对象,所以没有“管道”来实现这一点。我可以去拿
身份证
来自
Foo
对象并手动将其隐藏在
酒吧
对象(反之亦然),并对
保存更改
,但显然这不是正确的做法。
所以,大概我需要创建EF代理对象,而不是裸POCO对象。最好的方法是什么?