2010-12-23 113 views
1

我想知道使用SQL Server2005作爲數據庫開發多用戶C#應用程序的最佳方法是什麼。這是我想到的:什麼是最佳多用戶數據庫C#應用程序方法?

  1. 使用nhibernate或telerik的openacces orm。
  2. linq
  3. 使用包裝。將所有來自表的數據加載到對應的對象中(在啓動時),並從該點刪除&更新事務將影響數據庫。
  4. ...

我看了ORM工具,但在我看來,他們產生了大量的代碼,我不知道是否 這是必要的。

考慮到應用程序未來變化的最佳解決方案是什麼? 如果我會選擇第三個選項我如何確保只有一個用戶修改表中的一行(我如何鎖定正在修改的錶行)? 任何建議或閱讀材料將有所幫助! 謝謝!

+0

不確定加載所有數據是一個很好的決定......但它取決於你的數據庫大小... – 26071986 2010-12-23 17:22:01

+0

你是什麼意思的「linq」?你的意思是「LINQ to SQL」嗎?一定要考慮實體框架。 – 2010-12-23 17:29:02

回答

0

節省您自己的工作量和時間,並使用ORM。就幫助你決定哪一個而言,網上有大量的信息/意見(和StackOverflow!)關於哪一個使用,但這取決於你的應用程序要求(你沒有描述)。

我喜歡用於小型/中型應用程序的Linq-to-SQL。它快速簡單,幾乎高效。對於更大的應用程序,它將取決於您想要的數據轉換和設計的類型,但Linq-to-Entities或nHibernate可能是最合適的。

1

如果是多用戶請不要做#3。 DBMS的目的是爲您處理多用戶方面的問題。從交易到訪問權限的所有內容都內置於其中。沿着模擬代碼的方式走下去很難做到正確。過去像Borland的BDE和MS Access這樣的一些「引擎」做到了這一點。最終的結果是,您最終只能處理數據損壞和一致性錯誤等小問題。

不要緊,隨着數據庫的增長,要花更長的時間才能開始。

由於諸多原因,我們通常遠離ORM工具,主要是功能/利益/安全問題。當然,我們非常精通SQL,並且可以利用給定數據庫服務器可以提供的特定功能,而大多數ORM無法提供這些功能。我們還傾向於在產品發佈後根據性能指標調整查詢,這將迫使大多數ORM重新編譯應用程序。通過遠離這一點,我們可以讓生產DBA完成他們的工作。這可能是也可能不是你的問題。

這就是說很多開發團隊都喜歡並且成功地使用了你所說的。如果你要走這條路線,我會說跳過Linq-to-SQL轉而使用Entity Framework。 Linq-to-SQL幾乎都被EF取代。

1

有數百種方法可以解決這個問題,但不要打折ORM。每個版本的微軟的Entity Framework都會越來越好。框架4.0位非常好,並且與LINQ一起玩得非常好。

至於生成的代碼和你自己的代碼,試試類似Entity Spaces ......你可以完全控制代碼如何生成,數據訪問層是非常強大和靈活的(更不用說非常容易使用)。它也與LINQ很好地搭配。

多年來我寫了大量的數據訪問代碼。最初,ORM工具在邊緣很粗糙,留下了許多不足之處。這些工具已經經歷了許多次迭代,並且在我看來已經變得不可或缺。我無法想象在執行相同基本CRUD的例程之後編寫例程。我這麼做了很多年,花了很多時間糾正硬編碼的SQL,並且發誓不惜一切代價避免它。

至於併發/鎖定問題,這本身就是一個問題。有很多方法可以提供鎖定(主要類別是樂觀和悲觀)。各有其優點和缺點。

相關問題