当我尝试使用Entity Framework作为OR / M来保存poco实体时,我不断收到以下错误消息: -
'SqlServerContext.Foos'中的实体参与'FK_Foos_Bahs'关系。找到了0个相关的'Bah'。预计1'Bah'。
好的 - 错误信息是有意义的 - 但这不是我建模的:(或者我正在尝试建模)。它说如果我想保存Foo
,那么我需要1个实例一个Bah
。Foo
可以在没有Bah
的情况下存在。关系应该是1 <-> 0-or-1
..而不是1 <-> 1
。
这是EF中的模型......
谁能看到我做错了什么?
答案 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的表现方式不如“人与宠物”或“爱好”等同等消毒过程。