2011-12-15 93 views
0

構造我有一個包含查詢的細節,如LINQ到SQL查詢在運行時

<queries> 
    <query> 
    <name>GetStudentById</name> 
    <statement>select student_name from student where [email protected]</statement> 
    </query> 
</queries> 

在C#代碼的XML文件時,用戶將調用方法的executeQuery(串queryname,哈希表PARAMS) 我將檢索使用查詢名稱從xml文件中查詢語句。

params哈希表表將包含像 PARAMS [「@ ID」] = 5

然後我將使用ADO .NET來構造查詢和使用的ExecuteReader構造查詢語句之後在運行時執行它的值和傳遞參數列表。

我想知道是否有可能通過使用LinQ來做到這一點。有人能告訴我如何執行語句作爲LinQ查詢嗎?

感謝,

大衛

+0

聽起來像一個完美的適合小巧玲瓏。 – leppie 2011-12-15 10:11:45

回答

0

這是一個相當大的飛躍,從通過ADO.NET使用字符串查詢語句的LINQ to SQL去。在第一種情況下,您需要將您的Linq構建到SQL實體模型/ DataContext。你如何去解析一個sql語句從文本到Linq我不完全確定,但如果我想研究如何實現這一目標,我會閱讀表達式樹,以構建一個解析器,它接受你的字符串查詢並引用您的實體模型以生成linq查詢。

1

看看這個SO的帖子。看看約翰斯威特的答案,他解釋瞭如何使用CSharpCodeProvider在運行時執行語句。您將不得不將您的語句從sql轉換爲linq自己。如果沒有特別的理由必須是linq,我會建議將它保存在sql中,因爲在一天結束時,你將解析sql到linq,然後返回到sql。

即使使用dynamic linq您也會遇到問題,因爲您始終必須在查詢中指定from類。

另一種選擇是,如果你想用你的實體框架模型,這將是更容易使用entity sql,看看herehere欲瞭解更多信息。