2016年2月4日 星期四

【Entity Framework】The mapping of CLR type to EDM type is ambiguous

在把 Domain 的 Class 轉入 EF 的同名 Class 時出的錯

The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type 'ClassA'. Previously found CLR type 'Domain.ClassA', newly found CLR type 'EDMX.ClassA'.

指定的結構描述無效。錯誤: 
將 CLR 型別對應至 EDM 型別模稜兩可,因為有多個 CLR 型別符合 EDM 型別 'ClassA'。先前找到的 CLR 型別為 'Domain.ClassA',新找到的 CLR 型別為 'EDMX.ClassA'。

查詢的結論是這是 EF 先天的限制,解法只有兩個一是把 Domain 搬出來做一個獨立的專案,然後在 EF 引用 Domain 的 dll 來取 Domain Class。

不然就是簡單一點,Domain 跟 EDMX 的 Class 名稱取不一樣就好。

題外話,我個人覺得要做實體隔離應該不須要用 Domain 這個設計,因為自動映射耗效能,人工寫 Convert 花工時,應該能靠用 partial class 跟 實作 clone 解決就好,不過沒有實驗過。

ref: sof
※第一個回答是建議改名、第二個(投票較少的)是建議獨立專案

沒有留言:

張貼留言