【Visual Studio】 使用EF、 Linq2Sql快速建立資料互動層(一)

來源:互聯網
上載者:User

標籤:

項目伊始,建立資料庫互動層代碼是底層架構的首要任務。常用的做法包括手動編碼、Hibernate或者動軟之類的代碼產生器,而多數人忽略了.Net環境下VS提供的兩套非常好用的資料層工具。

EF和Linq2Sql兩套架構。 實際上他們相比其他方式絕對是最快,最方便的。 對使用者而言,無論EF還是Linq2Sql,他們都預設將項目配置了正確的資料庫連接,大幅減少在代碼中的工作量。

 

EF是Entity Framework 的縮寫,目前應該是到了第7個版本(貌似在Beta版本)。

Microsoft has given the following definition of Entity Framework:

The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write.

實際上,按照微軟給出的定義,EF的目的在於簡化開發人員工作量,推出了這套架構。是EF的工作流程樣本。

 

 

實際上,EF支援從資料表建立實體類,從實體類產生資料表以及從資料庫設計(DB Model)自動建立實體類和資料表。

如此可以直接大幅降低花費在資料庫設計、建表和寫實體類的工作。畢竟那是碼農們乾的事情,程式員怎麼可以這麼浪費時間呢。

 

目前為止,EF6應該是最新的。接下來從 table -> Domain Class的模式出發,簡單介紹EF的使用。

VS裡自己整合了EF,建立EF的資料層的步驟是:為解決方案添加資料庫連接,之後在解決方案下建立項目作為資料互動層,再在該項目下建立EF。

 

 

 

 

1. 建立資料庫連接。

 

 

 2. 建立ADO.Net 資料庫實體

3. 選擇Code First, 這裡我是已經存在資料庫了。

 

 4. 可以看到結果已經建立好所有被選中的資料表實體模型了。

 

接下來我們寫一段代碼進行資料訪問。在我的樣本裡,我們計劃查詢的一張表目前的資料量是在100萬條記錄以上。我們進行簡單的select查詢。

public void Test1_Select(){    Model1 modelContext = new Model1();   //select from rt_LeakProbe  var temp = modelContext.rt_LeakProbe.toList();   long count = temp.Count();
  DateTime lastDate = temp.GroupBy(x => x.UploadTime).Max(x => x.Key);  Console.WriteLine("count is: {0}; last Data Time is :{1};", count, lastDate.ToString("yyyy-MM-dd HH:mm:ss:ffff"));}

在我們使用 db First建立了資料表的實體同時,得到了一個預設命名為 Model1的類。這個類實際上是我們操作所有資料表的核心。在前一張中可以看到,Model1 是繼承了DbContext類。

關於DbContext類,可以理解成一個具備訪問設定項目的基類,在這裡,我們要訪問的項目就是在這個項目的App.Config中能夠找到的配置項。(你也可以認為就是資料庫連接)

 

以上代碼使用MS Test架構建立單元測試形式來測試。

需要注意的是,MS Test同樣需要使用NuGet進行EF的安裝以便正常讀取到資料庫連接配置。

查詢結果, 資料量 1067189, 最新紀錄上傳時間是11:54:25.777。

 

相信EF的優勢已經有所體現。當然個人暫時認為是存在一定不足的,比如說業務表設計中是可以使用繼承方式簡化一部分操作,而無論EF、Hibernate還是 Linq2Sql都提供直接的Mapping功能,這樣再去做繼承很麻煩。

但是實際上直接的Mapping在資料庫設計非常合理的前提下,是最簡單可靠的做法。

 

總而言之,EF這類工具非常高效,大幅簡化開發人員花在搭建資料層所需要的時間。個人也認為,使用EF的效率是高於Hibernate和動軟之類工具的。

 

【Visual Studio】 使用EF、 Linq2Sql快速建立資料互動層(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.