C# 在实体框架中定义复合主键

C# 在实体框架中定义复合主键,c#,.net,oracle,entity-framework,C#,.net,Oracle,Entity Framework,我有一个没有定义主键的表。将其添加到我的数据模型时,工具会生成以下消息: 生成过程中发现错误: 警告6013:表/视图 “费用明细”未定义主键 并且无法推断出有效的主键。此表/视图已被删除 排除。要使用实体,您需要查看您的模式,添加 输入正确的键,然后取消注释 我不能以任何方式修改表-但是我认为我可以从两列构造一个复合键来满足这些要求 但是,在EntityType元素Key中只能包含零个或一个元素 那么我如何指示EF将两列视为一个键呢?您可以在数据库端创建复合主键。你使用ODP.Net吗?它会自

我有一个没有定义主键的表。将其添加到我的数据模型时,工具会生成以下消息:

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

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

但是,在
EntityType
元素
Key
中只能包含零个或一个元素


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

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

我今天也遇到了同样的问题,我做了一个快速而肮脏的操作来让它工作。我刚刚注释掉了.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>


在我的情况下,这是有效的,但我认为它并不适用于所有情况。我正在使用
模块
作为复合键。我没有对这个表做任何花哨的事情,只是原始插入,所以它可以工作。

就像我说的-数据库没有定义键,我无法修改它。你找到解决方案了吗?@flindeberg-不幸的是,没有,请随意对它进行奖励,谢谢你回来更新
<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>