Error 6017: The NavigationProperty '(propertyname)' on the type '(typename)' is the source of a generated property '(otherpropertyname)' which conflicts with a member of the same name.
好的,我很确定我理解为什么我收到此错误信息,但对我来说如何解决它并不明显。
我有一个表salesreps
,它使用简单的外键关系链接到表territories
。 territories
表通过自动Feed进行更新,而salesreps表则通过我正在设计的Web界面手动维护。
如果领土消失,我不希望删除代表;我打算在我构建的UI中强调它们的手动纠正措施,作为需要进行区域分配的孤立代表。
销售代表是由一个ID定义的,该ID只对给定的区域是唯一的(我无法对此做任何事情,超出我的控制范围),如果删除了某个区域,我会创建外键ON DELETE
行为将territoryID
值设置为null,并使列可为空。然后,我在设置为territoryReferenceID
的{{1}}表上创建了一个名为salesreps
的计算列,使其保持不变,并根据isnull(territoryID, 0)
和{{1}创建主键因为我不能制作一个可以为空的PK列(我仍然认为它是蹩脚的,即使我理解它为什么)。在数据库中,这样可以正常工作,并且如果以某种方式同时删除两个具有相同repID的区域(极不可能),我可以使用可以捕获的主键冲突错误。
将此映射到EF会给出上述错误。我不知道为什么EF有这个问题,我不知道如何解决问题。我想保持数据库模式中设计的行为。
如何更正此问题?
答案 0 :(得分:0)
这是我最终做的事情:
我删除了实体模型和导航属性中的关系,打算直接使用关键ID。这工作正常,直到下次我从数据库更新模型时,它重新引入了关系并抛出了错误。
所以我只用一个territoryID
列(引用计算列)创建了数据视图,并创建了用于从视图中创建,修改和删除记录的存储过程。
这很有效。这很丑陋,但这就是我试图用EF“节省时间”所得到的。