gpt4 book ai didi

c# - EF 4.1 - 无法将一个实体与另一个现有实体相关联(可空 FK)

转载 作者:行者123 更新时间:2023-11-30 16:26:46 24 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.1(数据库优先,例如“老派”),并且我在 ASP.NET MVC 3 网络应用程序中使用 POCO。

我在 FooBar 之间建立了 1 - 0..1 关系,由 上的 nullable int 支持>Foo 表。

我的 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 }; 

例如“ stub 技术”,但会导致 EF 提示空列(因为它再次尝试创建"new"栏)。

我确定我以前做过这个 - 我只是希望我最终采用的解决方案不是“使用 SP”。

正如我提到的 - 我正在使用 POCO,所以我无法从我的 Controller 直接访问 DbContextObjectContext

有什么建议吗?

最佳答案

我怀疑是因为

DbContext API and its DbChangeTracker doesn't provide a way to change a state of Independent association (we must convert DbContext back to ObjectContext and change the state in ObjectStateManager).

以上内容转自Ladislav Mrnkva's blog post .尝试在 Foo 类中定义 BarId 属性,看看它是否会导致上下文正常工作。

关于c# - EF 4.1 - 无法将一个实体与另一个现有实体相关联(可空 FK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8515088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com