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>