2009-04-15 96 views
1

最後檢出L2E框架並幾乎立即遇到問題。
是的,我知道...我應該讀一些書。L2Entities,存儲過程和映射

現狀:

道具實體 - > ID和名稱。
實體映射到具有id和name列的表。
sproc,它只返回id列。

問題:

ObjectResult<MyProp> result = _container.MyStoredProcedure(uberParameter); 

調用此會導致錯誤

[有罪方法進入這裏]拋出異常: System.Data.EntityCommandExecutionException:數據讀取器是與指定的不相容' DataBase.MyPropTableObject」。的類型,「姓名」中的一員,不具有所述數據讀取器對應的列具有相同名稱..

問題#2:

`噸「只返回」這一領域,導致該列有XML數據類型,但sproc使用花哨的select語句,原因如下:

Msg 421,Level 16,State 1,Line 1 xml數據類型不能被選爲DISTINCT,因爲它不具有可比性。

問:
是否有可能完全關閉映射這個實體道具只爲這一個存儲過程?

回答

1

問題1是由於proc沒有填充實體的列。你並不真的需要PROC如果映射表,只需使用LINQ

var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name; 

會給你從表中的給定id名稱列中的值來選擇你想它的領域。你不需要使用存儲過程。

問題2聽起來像是在proc中,我認爲不同的xml數據列會給出很多結果,但我只是猜測,因爲我不知道你的解決方案。

這不是你的問題的直接答案,但希望它會指出你在正確的方向。

+0

Sproc不應該被觸摸。它具有排名,分頁等全文搜索功能。這就是爲什麼它無法處理XML數據類型的列。 這個問題花了我一段時間,但我管理它。我必須創建帶有排除的prop和冗餘視圖的冗餘實體(至少在l2e conf xml中 - 它可以在數據庫中被忽略)。 閱讀某處 - 它在下一次更新中不會成爲問題。 – 2009-04-29 08:06:06