2012-03-02 50 views
4

這可能是一個非常模糊的問題,但我想我並不真正瞭解正在發生的事情。我問了一個question earlier,在那裏我被告知一種簡單的「將數據綁定到對象」的方法就是運行一個SqlConnection(connectionString)。答覆還包括一條評論,說我可以喜歡L2S和實體框架,所以我深入瞭解這些。看起來你只需要將DataContext對象指向數據庫即可。爲什麼SqlConnection會是一個好處?使用DataContext類和SqlConnection有什麼區別?

使用其中之一有什麼區別(或優缺點)?還有一個「標準」嗎?更現代嗎?

P.S.我問了很多問題,並不都需要回答。我只是想爲我的問題增加一些清晰度,以及我對這個主題不是很瞭解。

回答

8

SqlConnection是基本的原始ADO.NET類庫 - 該庫的SQL Server部分的一部分,真的。這是.NET中所有數據訪問的基礎。

對於原始的ADO.NET,你很漂亮,而且接近金屬 - 你必須創建你的SQL查詢並執行它們,你會得到行和列,非常像關係數據庫給你。

優點:真正貼近SQL,真的很強大,性能最好
缺點:很難寫,更多的「膠水」代碼,更少的類型安全,更緊密的耦合的基礎數據庫結構


DataContext (Linq-to-SQL)或ObjectContext(實體框架)是更高層次的抽象 - 它們位於ADO.NET之上,但它們(Linq-to-SQL或實體框架)提供所謂的ORM功能 - 在這裏,沒有真正處理原始SQL語句和行/列,相反,這些代碼生成器將爲您創建一個抽象層 - 這是從.NET對象構建的。數據庫中的每個表都將轉換爲相應的.NET類,併爲該表中的所有列創建屬性。另外,對於L2S和EF,通常使用LINQ進行查詢 - 您的查詢類似於C#代碼,而L2s/EF將處理將您在C#中表達的查詢轉換爲SQL Server將實際使用的SQL語句執行。

優點:更容易的工作,更漂亮來處理,類型安全,使用LINQ查詢的能力(包含屬性與原始行/列的對象),更高的生產力開發
缺點:另一層意味着更多的翻譯,性能受到打擊,不適合某些事情(如批量操作)

+0

感謝您的回覆。這是我可以從這裏自行搜索的東西,但是您是否知道除了MSDN之外的任何有關這些主題的優秀資源?這是我的下一個「學習領域」,所以我覺得我最好把它放下。 – 2012-03-02 20:27:44

+0

@AdamBeck:MSDN絕對是您的首選;那麼如果您正在研究EF,請訪問http://thedatafarm.com/blog/ - Julie Lerman的博客,她是EF的女王;另外:如果您使用的是ASP.NET,請查看http:/ /www.asp.net也有很多與數據有關的東西(視頻,教程) – 2012-03-02 20:39:48

+1

這是一個很好的解釋!謝謝@marc_s這可以幫助我很多 – 2017-11-20 13:03:33

相關問題