我有一个没有定义主键的表。将此添加到我的DataModel时,该工具会生成以下消息:
生成过程中发现的错误:
警告6013:表/视图 'CHARGE_DETAILS'没有定义主键 并且无法推断出有效的主键。此表/视图已经过 排除。要使用该实体,您需要检查您的架构,添加 正确的密钥,并取消注释。
我不能以任何方式修改表 - 但是我认为我可以从两列构造一个复合键以满足这些要求。
但EntityType
元素Key
中的it appears只能包含零或一个元素。
那么我如何指示EF将两列作为键处理?
答案 0 :(得分:1)
您可以在数据库端创建复合主键。你使用ODP.Net吗?它会自动映射您的数据库pk。
答案 1 :(得分:1)
今天我遇到了同样的问题,我做了一个快速而肮脏的工作。我只是在给定实体的 .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>
在我的情况下,这有效,但我认为它并不适用于所有情况。我使用LINE
和MODULE
作为复合键。我没有对这张桌子做任何想象,只是原始插页,所以它有效。