错误6017:类型'(typename)'上的NavigationProperty'(propertyname)'是其来源

时间:2011-09-25 04:42:16

标签: sql-server-2005 entity-framework c#-4.0 entity-framework-4.1

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,它使用简单的外键关系链接到表territoriesterritories表通过自动Feed进行更新,而salesreps表则通过我正在设计的Web界面手动维护。

如果领土消失,我不希望删除代表;我打算在我构建的UI中强调它们的手动纠正措施,作为需要进行区域分配的孤立代表。

销售代表是由一个ID定义的,该ID只对给定的区域是唯一的(我无法对此做任何事情,超出我的控制范围),如果删除了某个区域,我会创建外键ON DELETE行为将territoryID值设置为null,并使列可为空。然后,我在设置为territoryReferenceID的{​​{1}}表上创建了一个名为salesreps的计算列,使其保持不变,并根据isnull(territoryID, 0)和{{1}创建主键因为我不能制作一个可以为空的PK列(我仍然认为它是蹩脚的,即使我理解它为什么)。在数据库中,这样可以正常工作,并且如果以某种方式同时删除两个具有相同repID的区域(极不可能),我可以使用可以捕获的主键冲突错误。

将此映射到EF会给出上述错误。我不知道为什么EF有这个问题,我不知道如何解决问题。我想保持数据库模式中设计的行为。

如何更正此问题?

1 个答案:

答案 0 :(得分:0)

这是我最终做的事情:

我删除了实体模型和导航属性中的关系,打算直接使用关键ID。这工作正常,直到下次我从数据库更新模型时,它重新引入了关系并抛出了错误。

所以我只用一个territoryID列(引用计算列)创建了数据视图,并创建了用于从视图中创建,修改和删除记录的存储过程。

这很有效。这很丑陋,但这就是我试图用EF“节省时间”所得到的。