2012-03-09 51 views
0

我有一個沒有定義主鍵的表。當加入這對我的DataModel所工具生成以下消息:在實體框架中定義複合主鍵

發現錯誤代期間:
警告6013:該表/圖 「CHARGE_DETAILS」沒有定義 一主鍵和沒有有效的主鍵可以推斷出來。此表格/視圖已排除 。要使用該實體,您需要查看您的架構,添加正確的密鑰 ,並取消註釋。

我不能以任何方式修改表 - 但我想我可以從兩列構造一個複合鍵來滿足這些要求。

然而it appearsEntityType元件Key內只能包含零個或一個元件。

那麼我會如何指示EF將兩列作爲關鍵字?

+0

你找到一個解決的辦法? – flindeberg 2015-04-28 06:57:00

+0

@flindeberg - 不幸的是沒有,隨意把賞金它雖然 – 2015-04-28 10:50:18

回答

1

您可以在數據庫端創建複合主鍵。你使用ODP.Net嗎?它會自動映射你的數據庫PK。

+0

就像我說的 - 數據庫中沒有定義的鍵,我不能修改它 – 2012-03-09 13:28:41

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> 

在我的情況下,這個工作,但我認爲它不會在任何情況下工作。我使用LINEMODULE作爲組合鍵。我沒有對這張桌子做任何事情,只是生插入,所以它的作品。

+0

謝謝你回來和更新 – 2015-04-28 15:57:30