【问题标题】:Error 6017: The NavigationProperty '(propertyname)' on the type '(typename)' is the source of错误 6017:类型 '(typename)' 上的 NavigationProperty '(propertyname)' 是
【发布时间】:2011-09-25 04:42:16
【问题描述】:

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 表通过自动提要进行更新,而 salesreps 表是通过我正在设计的 Web 界面手动维护的。

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

销售代表由仅在给定区域内唯一的 ID 定义(对此我无能为力,超出我的控制范围),如果某个区域被删除,我将外键 ON DELETE 设置为territoryID 值为 null,并使列可为空。然后,我在设置为isnull(territoryID, 0)salesreps 表上创建了一个名为territoryReferenceID 的计算列,使其保持不变,并根据repIDterritoryReferenceID 列创建主键,因为我不能使一个可为空的PK 专栏(我仍然认为这是蹩脚的,即使我明白为什么会这样)。在数据库中,这可以正常工作,如果以某种方式同时删除了具有相同 repID 的两个区域(极不可能),我可以捕获可以捕获的主键违规错误。

将此映射到 EF 会给我上述错误。我不知道为什么 EF 有这个问题,我也不知道如何让这个问题消失。我想保持数据库架构中设计的行为。

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    这是我最终做的:

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

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

    这行得通。这很丑陋,但这就是我试图用 EF 来“节省时间”的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2011-05-17
      • 2016-12-19
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多