近期做項目的EF改版時,在DB(ORACLE)中的表里添加一個新的PK,去除原有的PK。
在DB已添加完成操作,但這時在EDMX里進行從DB更新到EF里,更新完成后就發生如下錯誤提示:
Error 6 Error 3002: Problem in mapping fragments starting at line 8140:Potential runtime violation of table EXAMINE_MAIN's keys (EXAMINE_MAIN.MID): Columns (EXAMINE_MAIN.MID) are mapped to EntitySet EXAMINE_MAIN's properties (EXAMINE_MAIN.MID) on the conceptual side but they do not form the EntitySet's key properties (EXAMINE_MAIN.EXAMINEID, EXAMINE_MAIN.MID).
D:\130Project\eMBS\Center\EFDataProvider\OralceEntities\Entities.edmx 8141 8186 EFDataProvider
中文意思大概是:
OralceEntities.Entities.msl(806,10) : 錯誤 3002: 映射從第 806 行開始的片段時有問題:表 EXAMINE_MAIN 的鍵(EXAMINE_MAIN.MID)具有潛在運行時沖突: 列(EXAMINE_MAIN.MID)映射到概念端 EntitySet EXAMINE_MAIN 的屬性(EXAMINE_MAIN.MID),但是它們未形成 EntitySet 的鍵屬性(EXAMINE_MAIN.EXAMINEID, EXAMINE_MAIN.MID)。
處理方案:
導致原因:PK對應在EDMX里的屬性為實體鍵,實際上此時的這張表已存在兩個實體鍵(也就是說存在了兩個PK),在T4模板了自然也會生成兩個PK的值。這樣就會發生沖突了!
知道這個原因后估計我不說你也知道該怎么處理了吧?
很簡單,找的更新后的這張實體表,找出原來的PK ,按F4,把實體鍵設置為False,再重新編譯即可。(附圖)

