如下是Entity Framework 組件圖
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013111311014704.gif)
首先
在Class Library 項目中增加ADO
NET Entity Data Model文件
下面分別演示如何使EntityClient
對象服務Object Services
LINQ to Entities 訪問概念數據模型
使用EntityClient
EntityClient 是新的
NET 數據提供程序
EntityClient使用基於文本的語言Entity SQL與概念模型通信
EntityClient 中的類與常見的 ADO
NET 提供程序中的類相似
例如
使用 EntityCommand 對象執行 EntityClient 查詢
這需要 EntityConnection 對象連接到 EDM
當 EntityClient 與 EDM 中的實體交互時
EntityClient 不返回實體的實例而返回 DbDataReader 對象中的所有結果
EntityClient 可以返回一組標准行和列
也可以通過 DbDataReader 返回更復雜的分層數據的表示形式
示例代碼
string customerID = txtCustomerID
Text
Trim();
// Contains a reference to an Entity Data Model (EDM) and a data source connection
using (EntityConnection cn = new EntityConnection(
Name=NorthwindEntities
))
{
cn
Open();
EntityCommand cmd = cn
CreateCommand();
cmd
CommandText =
SELECT VALUE c FROM NorthwindEntities
Customers
+
AS c WHERE c
CustomerID = @customerID
;
cmd
Parameters
AddWithValue(
customerID
customerID);
DbDataReader rdr = cmd
ExecuteReader(CommandBehavior
SequentialAccess);
while (rdr
Read())
Console
WriteLine(rdr[
CompanyName
]
ToString());
rdr
Close();
}
示例使用 EntityClient 連接到概念模型並檢索特定的客戶
EntityConnection 可以接受概念層的完整連接字符串或 App
Config 文件中連接字符串的名稱
連接字符串包含元數據文件(CSDL
MSL 和 SSDL 文件)列表
以及存儲的專用於數據庫的連接字符串信息
如下是示例程序使用的數據庫連接串
<connectionStrings>
<add name=NorthwindEntities connectionString= metadata= res://NorthwindEDM/NorthwindModelcsdl|res://NorthwindEDM/NorthwindModelssdl|
res://NorthwindEDM/NorthwindModelmsl; provider=SystemDataSqlClient;provider connection string=" Data Source=localhost; Initial Catalog=Northwind;Integrated Security=True; MultipleActiveResultSets=True"providerName=SystemDataEntityClient />
</connectionStrings>
使用對象服務Object Services
與由 EDM 表示的數據進行交互的另一種方法是使用對象服務Object Services
對象服務允許直接返回對象列表
下面的示例演示了如何使用對象服務和實體 SQL 進行查詢以檢索 Customers 列表
NorthwindEntities northwindContext = new NorthwindEntities();
string customerID = txtCustomerID
Text
Trim();
ObjectQuery<Customers> query = northwindContext
CreateQuery<Customers>(
SELECT VALUE c FROM Customers AS c WHERE c
CustomerID = @customerID
new ObjectParameter(
customerID
customerID));
foreach (Customers c in query)
Console
WriteLine(c
CustomerID +
+ c
CompanyName);
在 EDM 中
EntityContainer 由從 ObjectContext(在本示例中為 northwindContext)繼承的類表示
ObjectContext 類實施 ObjectQuery<T> 接口
從而使其可以使用實體 SQL 或 LINQ 創建查詢
CreateQuery 方法接受參數化的實體 SQL 語句
該語句定義了將檢索 Customers 實體列表的查詢
通過使用 foreach 語句對 ObjectQuery<Customers> 進行迭代時將執行作用於數據庫的實際 SQL 語句
使用 LINQ to Entities
上述實體SQL腳本可以通過如下的LINQ to Entities 腳本實現
代碼如下
NorthwindEntities northwindContext = new NorthwindEntities();
string customerID = txtCustomerID
Text
Trim();
var query = from c in northwindContext
Customers
where c
CustomerID == customerID
select c;
foreach (Customers c in query)
Console
WriteLine(c
CustomerID +
+ c
CompanyName);
本示例程序演示界面如下
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013111311014860.gif)
使用實體框架Entity Framework
開發人員可以通過對象模型(而不是邏輯/關系數據模型)專注於數據
一旦完成 EDM 的設計並將其映射到關系存儲後
就可以使用 EntityClient
ObjectServices 和 LINQ 等多種技術與對象交互
From:http://tw.wingwit.com/Article/program/net/201311/15018.html