是否有可能以某種方式以編程方式將sql查詢轉換爲linq表達式樹? sql查詢應該是由這個linq查詢生成的,所以我把它看作是一個窮人將linq查詢序列化\反序列化爲t-sql格式。以編程方式將SQL查詢轉換回Linq Expression
謝謝。
是否有可能以某種方式以編程方式將sql查詢轉換爲linq表達式樹? sql查詢應該是由這個linq查詢生成的,所以我把它看作是一個窮人將linq查詢序列化\反序列化爲t-sql格式。以編程方式將SQL查詢轉換回Linq Expression
謝謝。
一切都是可能的,它只是需要工作的卡車。問題在於你首先必須解析SQL查詢,並解釋AST將其轉換爲linq表達式樹。這並不是微不足道的,因爲Linq與sql不是1:1兼容:例如,在linq中,groupby上的聚合是groupby外部的,而在SQL中它們是內部的:它們必須位於相同的範圍內作爲團隊,否則他們將無法工作。這種信息是將linq查詢轉換爲SQL查詢所需的,但也是相反的。
因此,爲了存儲查詢,我選擇了不同的路線,例如,一個規範模式
我不認爲LINQ-to-SQL中內置了任何東西。
理論上我敢說這是可能的(雖然它不能保證往返,因爲表達同一個查詢有不同的方式) - 但很難做得很好。
什麼可能會幫助你 - LINQPad。我想,它不能將SQL轉換爲LINQ查詢,但它可以將LINQ轉換爲SQL。
一種選擇是從SQL生成的IL代碼中進行跟蹤。例如:
SELECT TOP (50) [t0].[Id], [t0].[tralala]
FROM [pamparam] AS [t0]
生成:
IL_0001: ldarg.0
IL_0002: call LINQPad.User.TypedDataContext.get_pamparam
IL_0007: ldc.i4.s 32
IL_0009: call System.Linq.Queryable.Take
IL_000E: call LINQPad.Extensions.Dump
這種方式是很明顯的,那LINQ查詢看起來像:
pamparam.Take (50)
哦d * mn ...問題是 - 如果有可能以編程方式執行此操作。 :/ – 2009-05-21 07:26:17