我有两节课:
public class Foo
{
public int FooId {get;set;}
public virtual ICollection<Bar> Bars {get;set;}
}
public class Bar
{
public int BarId {get;set;}
public virtual Foo {get;set;}
}
如果我运行以下代码,我会得到Foreign Key Conflict
对食品。
var foo = from f in context.Foos
where f.FooId == 1
select f;
var bar = new Bar();
bar.Foo = foo;
context.Bars.Add(bar);
context.SaveChanges();
如果我禁用 SQL 中的所有关键检查,我最终会得到重复的结果Foo
在数据库中。
正在加载foo
与相同的上下文添加新的bar
与相关的foo
不会造成重复。我的猜测是您的真实代码使用两个不同的上下文。
代码中唯一需要更改的内容(不会编译,因为foo
is an IQueryable<Foo>
而不是一个Foo
)是为了具体化foo
, 例如:
var foo = (from f in context.Foos
where f.FooId == 1
select f).Single();
除此之外,代码片段很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)