【问题标题】:Define composite primary key in Entity Framework在实体框架中定义复合主键
【发布时间】:2012-03-26 20:46:54
【问题描述】:

我有一个没有定义主键的表。将此添加到我的 DataModel 时,该工具会生成以下消息:

生成过程中发现的错误:
警告 6013:表/视图 “CHARGE_DETAILS”没有定义主键 并且无法推断出有效的主键。此表/视图已 排除。要使用实体,您需要查看您的架构,添加 正确的键,然后取消注释。

我不能以任何方式修改表 - 但是我认为我可以从两列构造一个复合键以满足这些要求。

但是it appearsEntityType 元素Key 只能包含零或一 元素。

那么我将如何指示 EF 将两列视为键?

【问题讨论】:

  • 您找到解决方案了吗?
  • @flindeberg - 不幸的是,尽管如此,请随意悬赏

标签: c# .net oracle entity-framework


【解决方案1】:

您可以在数据库端创建复合主键。您使用 ODP.Net 吗?它会自动映射你的数据库pk。

【讨论】:

  • 就像我说的 - 数据库没有定义键,我无法修改它
【解决方案2】:

我今天遇到了同样的问题,我做了一个快速而肮脏的工作来让它工作。我刚刚注释掉了 .edmx 文件中给定实体的定义查询。

“原文”:

<EntitySet Name="CODES" EntityType="Self.CODES" store:Type="Tables" store:Schema="PIZZA">
  <DefiningQuery>
   SELECT 
    "CODES"."LINE" AS "LINE", 
    "CODES"."TEXT" AS "TEXT", 
    "CODES"."MODULE" AS "MODULE", 
    "CODES"."DEFAULT" AS "DEFAULT"
  </DefiningQuery>
</EntitySet>

修改后:

<EntitySet Name="CODES" EntityType="Self.CODES" store:Type="Tables" store:Schema="PIZZA">
  <!--<DefiningQuery>
   SELECT 
    "CODES"."LINE" AS "LINE", 
    "CODES"."TEXT" AS "TEXT",
    "CODES"."MODULE" AS "MODULE", 
    "CODES"."DEFAULT" AS "DEFAULT"
  </DefiningQuery>-->
</EntitySet>

在我的情况下这有效,但我认为它并非在所有情况下都有效。我使用LINEMODULE 作为复合键。我没有对这张表做任何花哨的事情,只是原始插入,所以它可以工作。

【讨论】:

  • 感谢您回来更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多