ADO.NET Entity Framework 入門示例嚮導(附Demo程序下載)
ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的實體框架,它使開發人員可以通過對象模型(而不是邏輯/關係數據模型)專注於數據。實體框架Entity Framework使用概念層、映射層和邏輯層將邏輯數據庫結構抽象化。本文
http://forum.entlib.com 開源論壇小組提供。
實體數據模型(Entity Data Model)
實 體框架的核心位於其模型中。實體框架支持表示數據庫中的關係架構的邏輯存儲模型。關係數據庫通常存儲數據的方式與應用程序使用數據的方式不同。通常,這會 迫使開發人員按照數據庫包含數據的結構檢索數據。因此,開發人員通常將數據加載到更適合處理業務規則的業務實體中。在本示例中,以邏輯模型表示關係數據庫 的構架,業務實體表示概念模型。實體框架使用映射層在模型之間搭建了橋樑。因此,實體框架的模型中有三個處於活動狀態的層:
1. 概念層(Conceptual layer) - 表示數據的概念模型,包括實體和相互關係。
2. 邏輯層(Logical layer)- 描述數據在數據庫的存儲模型。
3. 映射層(Mapping layer) - 在概念層和邏輯層模型之間建立映射。
這三層允許將數據從關係數據庫映射到更加面向對象的業務模型。實體框架提供了使用 XML 文件定義這些層的方法。它還基於概念模型的架構生成了一系列類。可以針對這些類進行編程以直接與數據交互。這提供了抽象級別,因此開發人員可以針對概念模型而不是關係模型進行編程。
下面演示如何使用Entity Framework 構建示例程序。
首先,使用Entity Data Model Wizard創建如下NorthwindDB.edml文件。
概念模型和邏輯模型視圖:
本示例程序採用Northwind 示例數據庫,下面開始編寫代碼對Customers表進行增、刪、改、查等等操作。
1.新增Customers記錄
using (NorthwindEntities myDb = new NorthwindEntities())
{
Customers customer = new Customers();
Random rm = new Random();
customer.CustomerID = "A" + rm.Next(9999).ToString();
customer.CompanyName = "EntLib.com Forum";
customer.Address = "http://www.EntLib.com";
myDb.AddToCustomers(customer);
int count = myDb.SaveChanges();
txtCustomerID.Text = customer.CustomerID;
}
2.更新Customers記錄
using (NorthwindEntities myDb = new NorthwindEntities())
{
var query = from customer in myDb.Customers
where customer.CustomerID == txtCustomerID.Text.Trim()
select customer;
foreach (var row in query)
{
row.CompanyName = "Updated Company Name";
}
myDb.SaveChanges();
}
3.刪除Customers記錄
using (NorthwindEntities myDb = new NorthwindEntities())
{
var query = from customer in myDb.Customers
where customer.CustomerID == txtCustomerID.Text.Trim()
select customer;
foreach (var row in query)
{
myDb.DeleteObject(row);
}
myDb.SaveChanges();
}
4.查詢Customers,返回所有記錄
using (NorthwindEntities myDb = new NorthwindEntities())
{
dataGridView1.DataSource = myDb.Customers;
}
如下的Entity Framework Demo 程序的運行界面:
下載Demo 示例程序!