不知道如何修复这个奇怪的实体框架(关系/导航)错误

时间:2011-03-24 05:07:21

标签: c# .net asp.net entity-framework-4

当我尝试使用Entity Framework作为OR / M来保存poco实体时,我不断收到以下错误消息: -

  
    

'SqlServerContext.Foos'中的实体参与'FK_Foos_Bahs'关系。找到了0个相关的'Bah'。预计1'Bah'。

  

好的 - 错误信息是有意义的 - 但这不是我建模的:(或者我正在尝试建模)。它说如果我想保存Foo,那么我需要1个实例一个BahFoo可以在没有Bah的情况下存在。关系应该是1 <-> 0-or-1 ..而不是1 <-> 1

这是EF中的模型......

enter image description here

enter image description here

enter image description here

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:2)

你的模型可能不对。目前你说Bah是许多Foos的主要实体。它是一对多的关系,而不是一对一的关系。您还在Bah中将Foo定义为必填项,因为Bah上的多重性 1 而不是 0..1

答案 1 :(得分:2)

看起来你的关系回到了前面 - 你的屏幕抓取显示1 Bah有很多Foos而Foo恰好有1个Bah - 听起来你需要交换两端以便1 Foo可以有很多Bah和Bah有正好是1 Foo。

你也可以做0 ... 1到很多关系(每个Bah可以有很多Foos,Bahs有0或1个Foo),或0 ... 1对1的关系。 .Net将在数据库中创建可为空的字段,并在模型中为可空属性,并且允许您在没有关联的情况下保存数据。

我知道你可能正在使用敏感数据因此消隐,但也许如果你把它换成更有意义的假货,你会更容易理解你想要做的事情! Foo和Bah的表现方式不如“人与宠物”或“爱好”等同等消毒过程。