Sql server 2005 错误6017:类型“(typename)”上的NavigationProperty“(propertyname)”是

Sql server 2005 错误6017:类型“(typename)”上的NavigationProperty“(propertyname)”是,sql-server-2005,entity-framework,c#-4.0,entity-framework-4.1,Sql Server 2005,Entity Framework,C# 4.0,Entity Framework 4.1,错误6017:类型“typename”上的NavigationProperty“propertyname”是生成的属性“otherpropertyname”的源,该属性与同名成员冲突 好的,我很确定我理解为什么会收到这个错误消息,但是我不知道如何解决它 我有一个salesreps表,它链接到一个具有简单外键关系的表。Territions表通过自动提要更新,而salesreps表则通过我正在设计的web界面手动维护 如果地域消失,我不想删除代表;我打算在我作为需要地域分配的孤立代表构建的UI中突出

错误6017:类型“typename”上的NavigationProperty“propertyname”是生成的属性“otherpropertyname”的源,该属性与同名成员冲突

好的,我很确定我理解为什么会收到这个错误消息,但是我不知道如何解决它

我有一个salesreps表,它链接到一个具有简单外键关系的表。Territions表通过自动提要更新,而salesreps表则通过我正在设计的web界面手动维护

如果地域消失,我不想删除代表;我打算在我作为需要地域分配的孤立代表构建的UI中突出显示它们,以便进行手动纠正操作

销售代表由一个ID定义,该ID仅对给定的区域唯一。对此,我无能为力,超出了我的控制范围。如果删除了区域,我将DELETE行为上的外键设置为territoryID值为null,并将列设置为null。然后,我在salesreps表上创建了一个名为territoryReferenceID的计算列,将其设置为isnullterritoryID,0,使其持久化,并基于repID和territoryReferenceID列创建了主键,因为我无法创建一个我仍然认为是跛脚的可为null的PK列,即使我理解为什么它是跛脚的。在数据库中,这可以正常工作,如果两个区域以相同的repID同时被删除,那么我很可能会遇到一个主键冲突错误

将此映射到EF会导致上述错误。我不知道为什么英孚在这方面有问题,我也不知道如何解决这个问题。我希望保持数据库模式中设计的行为


如何纠正此问题?

以下是我最后的做法:

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

因此,我创建了一个数据视图,其中只有一个territoryID列引用了计算列,并创建了用于在视图中创建、修改和删除记录的存储过程

这很有效。这很难看,但这就是我用EF节省时间的原因