EF 4.1 -不能将一个实体与另一个现有实体(可空的FK)关联
本文关键字:实体 另一个 关联 FK 一个 不能 EF | 更新日期: 2023-09-27 18:17:50
我正在使用实体框架4.1(数据库第一,例如"老派"),我在ASP中使用poco。. NET MVC 3 web应用。
我有一个1 - 0..Foo
和Bar
之间有1个关系,在Foo
表上有一个可空的int。
我的POCO是这样的:
public class Foo
{
public Bar Bar { get; set;
}
public class Bar
{
public int BarId { get;set; }
}
现在,我有一个Foo
已经存在于系统中,但BarId
是空的。
现在我正试图将Foo
与现有的Bar
相关联。
这是我得到的代码:
var existingBar = _repo.GetBar(2);
var existingFoo = _repo.GetFoo(1);
existingFoo.Bar = existingBar;
但是在幕后,EF正在添加一个新的 Bar
。为什么?
我也试过这个:
existingFoo.Bar = new Bar { BarId = 2 };
E。g"存根技术",但导致EF抱怨空列(因为它再次尝试创建一个"新"栏)。
我确信我以前也这样做过,我只是希望我最终的解决方案不是"使用SP"。
正如我提到的-我使用POCO的,所以我不能直接访问DbContext
或ObjectContext
从我的控制器。
任何建议吗?
我怀疑这是因为
DbContext API和它的DbChangeTracker没有提供改变独立关联状态的方法(我们必须将DbContext转换回ObjectContext并在ObjectStateManager中改变状态)。
以上摘自Ladislav Mrnkva的博客文章。试着在Foo
类中定义BarId
属性,看看它是否能使上下文正常工作。