2010-09-20 63 views
4

有時候,我得到這樣一個例外:EF 4.0支持哪些功能?

This method cannot be translated into a store expression. 

是否有任何列表什麼EF 4.0支持,什麼不?

剛纔我GOOGLE了,但沒有;(

回答

3

以下列出了LINQ methods which are supported

LINQ To Entities還爲CLR類型操作提供以下Canonical Function Mapping到SQL函數。這些是默認情況下所有提供商應該支持的方法。例如,String.Contains應始終映射到SQL中的LIKE語句或IndexOf語句。

但是,請注意,不同的提供者可以自由地進行自己的映射。我看到一些EF提供商不支持完整的「規範」功能列表,或者添加他們自己的功能。由於每個EF提供者都自己進行映射,所以除了上面列出的標準之外,不可能給出明確的答案。

+0

這是我發佈的鏈接。 – 2010-10-06 19:39:32

+0

@Robert:不是第二個鏈接 - 函數映射顯示了移植的實際方法(即:String.Contains等)。 – 2010-10-06 20:05:10

+0

啊,我明白了。哇,這是一個不起眼的頁面;難怪我以前找不到它。顯然,我還沒有準備好加入EF 4.0內部的聖地。 :) – 2010-10-06 20:23:33

2

支持和不支持LINQ方法(LINQ到實體)
http://msdn.microsoft.com/en-us/library/bb738550.aspx

+2

您的鏈接僅提及查詢運算符。怎麼樣的方法/屬性像'String.Length','String.Contains'等等? – Gabe 2010-09-20 16:03:43

+0

Gabe +1,尋找相同的。 – Overdose 2010-09-21 11:35:47

+0

@加貝:我在我的回答中粘貼了鏈接。 – 2010-10-06 16:33:31

1

通過設計,LINQ to Entities需要整個LINQ查詢表達式被翻譯成服務器查詢,在翻譯查詢之前,只有少數不相關的子表達式(查詢中的表達式不依賴於服務器的結果)在客戶端上進行評估。任意方法調用沒有ak不支持翻譯。更具體地說,LINQ to Entities只支持無參數構造函數和初始化函數。 請查看LINQ to Entities, what is not supported?瞭解更多信息。