2010-01-04 73 views
4

我有一個使用全文搜索視圖的存儲過程。
我試圖將結果映射到現有實體(Sales),其中我將MivType列映射到SaleType(因爲它更有意義,並且我想讓db名稱遠離我的網站)。存儲過程映射到函數導入,並將其ReturnType定義爲Sales
只要實體具有與字段名稱相同的屬性名稱,就可以很好地工作。實體框架 - 映射不映射存儲過程?

這裏是我的問題:當我改變屬性的名稱,我得到以下錯誤運行導入功能後:

數據讀取器與指定的「Model.Sale」不兼容。類型爲'SaleType'的成員在數據讀取器中沒有相應的列,並且名稱相同。

我可以解決這個問題,如果我改變對實體財產「SaleType」到「MivType」,但我爲什麼要那樣做?這不是映射的目的嗎?
這意味着我必須使用存儲過程和實體完全相同的名稱,所以實際上,映射被忽略(我有像YzrName,MivYaad等名稱,我不喜歡它)。
有沒有簡單的解決方法呢?我不想在我的應用程序中使用db名稱,並且更喜歡不更改存儲過程...
(我應該提到我是EF的初學者,所以這可能是一個新手的錯誤)

謝謝。

回答

4

那麼實體設計器不工作得很好。我通常會盡力在XML中做所有事情。在XML中有3個部分。存儲(SQL數據庫的表示)。概念(您的.Net對象的表示和存儲映射的概念

聽起來這個錯誤在您的概念性到存儲映射中。您可以在概念端保留屬性名稱SalesType,但映射必須映射同時在概念和存儲方面的正確的名稱。

參考MSDN這裏有一些文章 http://msdn.microsoft.com/en-us/library/cc716731.aspx

+0

我會接受的答案,因爲EF設計不能很好地工作,不惜一切,但我我不知道我可以通過XML來修復那個問題,可惜我沒有時間去確認這個問題, – Kobi 2010-02-01 05:52:39

+0

@Kobi你有解決這個問題的方法嗎?在我的項目面臨同樣的問題。請建議我...我知道這是爲時已晚.. – user1882705 2013-11-20 16:37:39

+0

@ user1882705 - 不幸的是我沒有一個真正的解決方案 - 我留下了醜陋的名字。此外,該項目被取消。但是 - 這個問題已經超過3歲了,我希望這個bug現在已經被修復了。實體框架現在在版本6上。對不起。 – Kobi 2013-11-20 22:09:58