2017-04-27 29 views
-1

我正在開發一個應用程序在SQL Server的頂部使用Microsoft WPF來處理一個較大的系統。如何避免使用LINQ的SQL字符串(WPF項目)

這是一所大學的高級項目,我希望事情成爲「最佳實踐」,因爲投資組合原因。我知道MVVM是構建WPF應用程序本身的方式。此外,我有興趣利用LINQ代替數據操作和檢索的「SQL查詢字符串」方法,但是我感到非常沮喪,因爲我似乎無法得到關於如何執行此操作的直接答案正確的方式(或者如果這是最佳實踐)。

我發現了一個很有前途的教程,但是它調用了使用Linq-to-SQL來創建我已經閱讀爲不推薦使用的對象關係,並且在VS2017中不可用。我發現一個使用ADO.NET的日期教程(〜2010),但是它給了我很多問題。

我應該堅持「SQL查詢字符串」的做事方式嗎?

+1

我建議使用[實體框架(https://en.wikipedia.org/wiki/Entity_Framework) –

回答

4

你可以使用c#中的實體框架來做到這一點。

  1. 將您的數據庫的實體模型添加到您的應用程序。
  2. 然後在要調用數據

    <your-entities> context = new <your-entities>(); 
    
  3. 那麼你可以使用LINQ

    var select = from a in context.<table-name>.IEnumerable() select a; 
    

    終於可以使用select變量讀取數據調用數據的類創建一個對象。

EG-:

foreach(var item in select){ 

} 
+0

實體模型似乎是最好的方式,存儲庫模式似乎也很棒,但我沒有時間。 – Cw1080

2

最佳做法?不要使用LINQ to SQL。我並不反對爲小型學生項目簡化某些事情的想法,但是它簡化了事情,它爲現實世界中的DBA提供了一場噩夢。實體框架也可能導致這種胃灼熱,但也有解決方法。

如果通過「SQL查詢字符串」的方式來處理編碼SQL查詢字符串並從您的代碼發送到數據庫。如果事情是可預測的,那可以工作。但是,如果你太活躍了,你只需重複DBA噩夢。

我會查找存儲庫模式並學習如何創建存儲庫。雖然你可能不需要在現實世界中始終這樣做,但這是學習抽象的很好的練習。對於需要處理大量連接的項目,請考慮檢查視圖的創建並構建一些存儲過程。所有這些將在您離開教室進行業務時爲您服務。作爲一個小問題,LINQ to SQL是一個寫在被動擴展之上的實驗(Eric Maier,當時他與微軟並沒有抨擊敏捷)。如果SQL Server不能與Visual Studio 2008聯合推出,它可能還沒有發佈過.SQL Server的延遲意味着實體框架的延遲,這意味着「在15分鐘內構建網站」的談話被FUBARed。因此,LINQ to SQL成爲事實上的「標準」,各地的DBA開始攜帶槍支工作(好吧,最後一部分不是真的,其餘部分是)。

+0

好極了,存儲庫模式看起來非常有用,有些的工作絕對可以通過視圖和存儲過程來完成。 – Cw1080

相關問題