我有一個映射到表EntityTable的實體,非常簡單,由大約4或5個值類型屬性組成。但是,根據我訪問的數據庫,對於其中一個屬性,模式是不同的:在大多數模式中,它是一個decimal
,在其他幾個中,它是一個smallint
(或在C#中的Int16
)。很明顯,當EF試圖將Int16
值映射到預期爲decimal
型特性的實體時,它會跳過EF。實體框架4 ExecuteStoreQuery <T> - 無法獲得對象類型屬性
所以我的解決辦法是要求ExecuteStoreQuery()的EF上下文和有FauxEntity聲明靠不住的屬性作爲object
並沒有明確decimal
或Int16
。然後,我可以專門處理手動拆箱。
但是,這是行不通的!物業的價值是null
而不是對盒裝Int16
(或decimal
價值)的對象引用!這是奇怪,因爲我可以很容易地聲明是這樣的:那麼
object intVal = 16;
intVal
將成爲盒裝int
值的一個實例。然後我可以適當地取消選擇。
這就是我對ExecuteStoredProcedure的期望 - 它應該將值拋入對象屬性中,然後我可以執行一系列拆箱測試來正確解開該值。但是,價值永遠不會成功裝箱在object
屬性!
這是甚至可能與ExecuteStoreQuery<T>()
?爲什麼它不能將值類型加載到object
-type屬性中?
順便說一句,我知道我可以通過對SQL代碼執行DataReader並手動鑄造每個結果列來解決手頭上的問題。我只是想知道爲什麼ExecuteStoreQuery<T>()
不符合預期。
所以它看起來像第二個項目符合性能要求是什麼讓我絆倒。 '對象'肯定不是原始類型。唉。感謝Craig在MSDN中進行挖掘,我明顯錯過了! – kdawg 2011-03-17 21:30:39