程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> ADO.NET Entity Framework(1)介紹

ADO.NET Entity Framework(1)介紹

編輯:關於.NET

目錄

1  概念  1

2  ADO.NET Entity Framework  2

2.1  架構  2

2.2  說明  2

2.3  EntityConnection  4

2.4  EntityCommand  5

2.5  通過EntityDataReader 方式的數據訪問  6

2.6  通過ObjectContext返回ObjectQuery<T> 方式的數據訪問  9

概念

LINQ to Entities 一種 LINQ 技術,使開發人員可以使用 LINQ 表達式和 LINQ 標准查詢運算符,針對實體數據模型 (EDM) 對象上下文創建靈活的強類型化查詢。 ESQL Entity SQL
一種與 SQL 類似的、獨立於存儲的語言。該語言直接操作概念實體架構,並支持實體數據模型功能,如繼承和關系。 EF 實體框架ADO.NET Entity Framework
一套支持面向數據的軟件應用程序開發的技術,可讓開發人員使用映射到數據源中的邏輯架構的概念模型。 EDM 實體數據模型(Entity Data Model)
一個數據模型,用於將應用程序數據定義為公共語言運行時類型和存儲結構可以映射到的實體和關系集。 Entity 實體
ADO.NET Entity Framework 應用程序域中的一個概念,數據類型在該域中定義 csdl 概念架構定義語言 Conceptual schema definition language
一種基於 XML 的語言,可用於定義概念模型的實體類型、關聯、實體容器、實體集和關聯集 ssdl 存儲架構定義語言 Store schema definition language
一種基於 XML 的語言,用於定義存儲模型的實體類型、關聯、實體容器、實體集和關聯集,經常對應於數據庫架構。 msl 映射規范語言 Mapping specification language
一種基於 XML 的語言,可用於將概念模型中定義的項映射到存儲模型中的項

ADO.NET Entity Framework 架構

ADO.NET Entity Framework分Storage Provider ,Mapping Layer ,Object Services,LINQ to Entities 四層。

Storage Provider 負責直接和數據源通訊,支持的數據庫Sql Server Mapping Layer 數據庫概念層和邏輯層的映射。
通過EDM模型和mapping provider,應用程序將構建在更高層次的EDM模型抽象層次上。同時,在應用程序中將不再使用本地數據庫的查詢語言比如(T-sql),取而代之的將是Entity SQL。 Object Services Object Services 的目標是消除數據和應用程序代碼風格的不匹配
ADO.NET允許將查詢結果呈現為行和列記錄,同時也可以呈現為.NET對象。
該層還包括了更多被O/R mapping框架支持的高級的服務,比如身份認證,跟蹤對象狀態變化,並行性檢查以及處理更新。 LINQ to Entities 將Entity Framework與LINQ項目集成,以提供面向對象編程語言適合自己特點的查詢功能。
LINQ to Entities這一層依賴於object services和mapping layer這兩層。

說明

ADO.NET Entity Framework 的數據訪問方式與ADO.NET 有類似之處

ADO.NET ADO.NET Entity Framework SqlConnection EntityConnection SqlCommand EntityCommand SqlDataReader. EntityDataReader SqlDataAdapter ObjectContext DataSet ObjectQuery<T> Entity csdl,ssdl,msl

注意:ADO.NET與ADO.NET Entity Framework是不同的技術,這個對比只是一個幫助理解的比效

EntityConnection

EntityCommand

通過EntityDataReader 方式的數據訪問

string econString = @"

metadata=res://*/myModel.csdl
|res://*/myModel.ssdl
|res://*/myModel.msl
;

provider=System.Data.SqlClient;

provider connection string=""
Data Source=.;
Initial Catalog=LingTestDB;
Integrated Security=True;
MultipleActiveResultSets=True;
""
";

EntityConnection econ = new EntityConnection();
econ.ConnectionString = econString;

EntityCommand ecmd = new EntityCommand();

ecmd.CommandType = CommandType.Text;

ecmd.Connection = econ;

ecmd.CommandText = "select it.ItemID,it.ItemMatter from myContext.DBItem as it"; //esql

//或
// cmd.CommandText = "select value it from myContext.DBItem as it"; //esql
// to SQL : "select * from DBItem"

econ.Open();
EntityDataReader eReader = ecmd.ExecuteReader(CommandBehavior.SequentialAccess);

while (eReader.Read())
{
Console.WriteLine("{0},{1}", eReader[0].ToString(), eReader[1].ToString());
}

通過ObjectContext返回ObjectQuery<T> 方式的數據訪問

ObjectContext提供了管理數據的功能

string econString = @"

metadata=res://*/myModel.csdl
|res://*/myModel.ssdl
|res://*/myModel.msl
;

provider=System.Data.SqlClient;

provider connection string=""
Data Source=.;
Initial Catalog=LingTestDB;
Integrated Security=True;
MultipleActiveResultSets=True;
""
";

EntityConnection econ = new EntityConnection(econString);

ObjectContext context = new ObjectContext(econ);

context.DefaultContainerName = "myContext";

ObjectQuery<DBItem> queryTab = context.CreateQuery<DBItem>("DBItem");

foreach (var r in queryTab)
{
System.Console.WriteLine("{0},{1}", r.ItemID, r.ItemMatter);
}

string econString = @"

metadata=res://*/myModel.csdl
|res://*/myModel.ssdl
|res://*/myModel.msl
;

provider=System.Data.SqlClient;

provider connection string=""
Data Source=.;
Initial Catalog=LingTestDB;
Integrated Security=True;
MultipleActiveResultSets=True;
""
";
EntityConnection econ = new EntityConnection(econString);

ObjectContext context = new ObjectContext(econ);

ObjectQuery<DBItem> queryTab = context.CreateQuery<DBItem>("select value it from myContext.DBItem as it where it.ItemID='a'");

foreach (var r in queryTab)
{
System.Console.WriteLine("{0},{1}",r.ItemID,r.ItemMatter);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved