2010-04-23 75 views
3

我正在構建一個新的Web應用程序項目,並且被許多執行數據訪問的方法所困惑。我在SQL上後退了一下,並且對使用LINQ to SQL還是使用ADO.net有點困惑?新Web應用程序的最佳數據訪問方法

使用LINQ/SQL優於ADO.net有哪些優缺點?

如果是ADO.net,那麼檢索數據的最佳方式是指調用存儲過程還是直接調用t-sql代碼?

我的問題是什麼是cleanes和最有成效和專業的方式爲asp.net中的web應用程序創建DAL?

謝謝

回答

2

最好的方法是O/RM。小應用程序Linq2Sql,大型應用程序實體框架4或NHibernate(流利NHibernate)。

從您的代碼調用SP意味着您的應用程序邏輯被放置在應用程序代碼以外的地方。這是一條路,但目前由於TDD而越來越不受歡迎。

最好的方法是將DAL創建爲獨立的邏輯層,自己的程序集。

1

你應該檢查出一些ORM框架,如NHibernate的:http://nhibernate.info

+0

感謝您的答覆。我想在LINQ/SQL或ADO.net之間做出決定? – user98454 2010-04-23 11:03:54

4

有什麼優點和使用LINQ/SQL過 ADO.net的 缺點是什麼?

  • LINQ2SQL產生一系列 類,是 你的(選擇)數據庫中的表1對1的映射 - 這意味着你不必用編寫繁瑣和容易出錯的數據訪問代碼 ado.net自己。
  • 如果您打算使用自定義對象到關係映射(非1對1),Linq2sql可能無法爲您提供足夠的值 - 當然,您仍然可以使用linq2sql,但這意味着需要額外的層之間。
  • Linq2sql允許您使用強大的linq表達式輕鬆查詢數據庫。編寫linq查詢爲您提供intellisense,如果您將查詢作爲字符串嵌入到ado.net命令中,或者在management studio中編寫存儲過程,您將無法獲得該查詢。
  • 使用linq,你不需要知道t-sql,而如果你使用ado.net(儘管如果你的linq查詢開始做奇怪的事情,它肯定會有優勢!)。編寫提供分頁結果集的t-sql查詢的複雜性的一個例子就是.Skip(page * size).Take(size)
  • Linq2sql自動創建使用參數化查詢的t-sql,它比使用字符串構建查詢的手寫ado.net代碼更安全,可防範SQL注入攻擊。
  • Linq2sql在存儲過程中不能很好地工作 - 如果使用sprocs,最好不要打擾linq2sql。
  • Linq2sql可能會要求您的數據庫表鎖定得比使用存儲過程編寫ado.net代碼的鎖定要少。

如果是ADO。net,那麼最好的 的方式檢索數據是指 調用存儲過程還是 直接調用t-sql代碼?

  • 如果你想排除LINQ2SQL和ado.net發生數據檢索是更好的選擇,我想如果你直接調用T-SQL代碼非常頻繁,甚至不惜一切感到驚訝。我幾乎肯定會希望你使用存儲過程的原因是你的查詢過於複雜,使用linq和/或安全性要求。

我的問題是什麼是乾淨和在asp.net web應用創建DAL的最effiecient和專業的方式?

  • 在我看來,最乾淨的DAL可能會使用LINQ2SQL,因爲它是SQL Server的最亮和最有針對性的ORM(假設你的SQL Server中仍然有興趣的,當然這個具體的問題)。
  • 效率最高的可能是使用ado.net的手寫書籤,但這可能會浪費時間,因爲您會發現諸如linq2sql這樣的工具比90%的開發人員編寫更好的查詢。
  • 在我看來,最專業的DAL可能是linq2sql,但由於更多的靈活性,它更可能是NHibernate的實體框架(正如其他答案所建議的那樣)。
  • 我在清潔和專業方面的最後選擇DAL肯定是一個手寫的ado.net之一。
1

我毫無疑問會去Linq2Sql。

下載Linqpad並玩弄所包含的示例以開始使用。

0

如果您希望在性能方面獲得有效的數據訪問,則不會比純ADO.NET更快。你可以看看這裏:http://ormbattle.net/

相關問題