如下是Entity Framework 组件图
首先在Class Library 项目中增加ADONET Entity Data Model文件下面分别演示如何使EntityClient对象服务Object ServicesLINQ to Entities 访问概念数据模型使用EntityClientEntityClient 是新的NET 数据提供程序EntityClient使用基于文本的语言Entity SQL与概念模型通信EntityClient 中的类与常见的 ADONET 提供程序中的类相似例如使用 EntityCommand 对象执行 EntityClient 查询这需要 EntityConnection 对象连接到 EDM当 EntityClient 与 EDM 中的实体交互时EntityClient 不返回实体的实例而返回 DbDataReader 对象中的所有结果EntityClient 可以返回一组标准行和列也可以通过 DbDataReader 返回更复杂的分层数据的表示形式示例代码 string customerID = txtCustomerIDTextTrim(); // Contains a reference to an Entity Data Model (EDM) and a data source connection using (EntityConnection cn = new EntityConnection(Name=NorthwindEntities)) { cnOpen(); EntityCommand cmd = cnCreateCommand(); cmdCommandText = SELECT VALUE c FROM NorthwindEntitiesCustomers + AS c WHERE cCustomerID = @customerID; cmdParametersAddWithValue(customerID customerID); DbDataReader rdr = cmdExecuteReader(CommandBehaviorSequentialAccess); while (rdrRead()) ConsoleWriteLine(rdr[CompanyName]ToString()); rdrClose(); }示例使用 EntityClient 连接到概念模型并检索特定的客户EntityConnection 可以接受概念层的完整连接字符串或 AppConfig 文件中连接字符串的名称连接字符串包含元数据文件(CSDLMSL 和 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 = txtCustomerIDTextTrim(); ObjectQuery<Customers> query = northwindContextCreateQuery<Customers>( SELECT VALUE c FROM Customers AS c WHERE cCustomerID = @customerID new ObjectParameter(customerID customerID)); foreach (Customers c in query) ConsoleWriteLine(cCustomerID + + cCompanyName);在 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 = txtCustomerIDTextTrim(); var query = from c in northwindContextCustomers where cCustomerID == customerID select c; foreach (Customers c in query) ConsoleWriteLine(cCustomerID + + cCompanyName);本示例程序演示界面如下
使用实体框架Entity Framework开发人员可以通过对象模型(而不是逻辑/关系数据模型)专注于数据一旦完成 EDM 的设计并将其映射到关系存储后就可以使用 EntityClientObjectServices 和 LINQ 等多种技术与对象交互