entity framework

上传人:第*** 文档编号:31329358 上传时间:2018-02-06 格式:DOC 页数:46 大小:376KB
返回 下载 相关 举报
entity framework_第1页
第1页 / 共46页
entity framework_第2页
第2页 / 共46页
entity framework_第3页
第3页 / 共46页
entity framework_第4页
第4页 / 共46页
entity framework_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《entity framework》由会员分享,可在线阅读,更多相关《entity framework(46页珍藏版)》请在金锄头文库上搜索。

1、Entity Data Model (EDM) 深入分析, Part 1Entity Data Model 是.NET Framework v3.5 SP1 引入的新功能,比 Linq To SQL 更加强大的 ORM,让开发人员只需要着眼于领域对象模型的开发,而不需要考虑它们是如何与关系数据库交互。本系列文章逐步深入介绍如下内容:EDMX Schema 文件、Model Browser、映射关系、产生的实体类(Generated entity classes)、文档(Documentation)等等。1. EDMX Schema 文件可以将 EDMX 作为 XML 文件打开,你会发现该文件包

2、含 3 个主要部分。Conceptual Models (CSDL)Storage Models (SSDL)Mapping (MSL)一般情况下,你没有必要手动修改 EDMX -XML 文件。可视化的 EDM 设计器、Mapping Details 窗口和 Model Browser 窗口包含有上述 3 个部分,并非常友好地显示整个 Entity Data Model 模型。当你编译项目时,MSBuild 将从 EDMX 文件提取 CSDL/SSDL/MSL 内容,并放置 3个独立的 XML 文件到项目的输出目录。2. Model Browser 窗口Model Browser 窗口以可视的

3、树形图显示概念模型和存储模型。3. Mapping details 窗口EDM 设计器也提供了一个不错的 Mapping Details 窗口,包含 2 个视图。Map Entity to Tables / View这一视图显示了数据库中所有字段和相应实体中的属性,可以用来查看和编辑 EDM的映射关系。Map Entity to Functions这一视图用来选择一个特定的存储过程来插入、更新或删除 Entity 实例。4. 生成的实体类(Generated Entity Classes)除了上述的 XML Schema 文件外,EDM 向导也生成了实体类。下一步仔细分析 .Designer.

4、cs 文件中的实体类,并和 LINQ to SQL 中的类进行比较。1) 比较 LINQ to SQL class 和 EDM EntityObject class/ LINQ to SQLTable(Name=dbo.Employees)public partial class Employee : INotifyPropertyChanging, INotifyPropertyChangedEDM 类则是以不同的 attributes,并且总是继承 EntityObject 或 ComplexObject 类。EntityObject 类提供了变更跟踪和关系管理。/ Entity Data

5、 Modelglobal:System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName=NorthwindModel, Name=Employee)global:System.Runtime.Serialization.DataContractAttribute()global:System.Serializable()public partial class Employee : global:System.Data.Objects.DataClasses.EntityObject2) 比较 LINQ to SQL

6、entity constructor 和 EDM Create method/ LINQ to SQLpublic Employee()this._Employees = new EntitySet(new Action(this.attach_Employees), new Action(this.detach_Employees);this._EmployeeTerritories = new EntitySet(new Action(this.attach_EmployeeTerritories),new Action(this.detach_EmployeeTerritories);t

7、his._Orders = new EntitySet(new Action(this.attach_Orders), new Action(this.detach_Orders);this._Employee1 = default(EntityRef);OnCreated();EDM 没有生成上述 LINQ to SQL 的构造函数,而是创建了一个特定的 Create 方法,并提供了所有必需属性(not nullable)的输入参数。/ Entity Data Modelpublic static Employee CreateEmployee(int employeeID, string

8、lastName, string firstName)Employee employee = new Employee();employee.EmployeeID = employeeID;employee.LastName = lastName;employee.FirstName = firstName;return employee;3) 比较 LINQ to SQL 和 EDM : 实体属性(entity property)/ LINQ to SQLColumn(Storage=_EmployeeID, AutoSync=AutoSync.OnInsert, DbType=Int NO

9、T NULL IDENTITY, IsPrimaryKey=true, IsDbGenerated=true)public int EmployeeIDgetreturn this._EmployeeID;setif (this._EmployeeID != value)this.OnEmployeeIDChanging(value);this.SendPropertyChanging();this._EmployeeID = value;this.SendPropertyChanged(EmployeeID);this.OnEmployeeIDChanged();尽管 EDM 公有属性(pu

10、blic property)的 attribute 是不同的,但 get 和 set 基本是一样的。/ Entity Data Modelglobal:System.Data.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)global:System.Runtime.Serialization.DataMemberAttribute()public int EmployeeIDgetreturn this._EmployeeID;setthis.OnEmployeeI

11、DChanging(value);this.ReportPropertyChanging(EmployeeID);this._EmployeeID = global:System.Data.Objects.DataClasses.StructuralObject.SetValidValue(value);this.ReportPropertyChanged(EmployeeID);this.OnEmployeeIDChanged();4) 比较 LINQ to SQL Table 和 EDM ObjectQuery/ LINQ to SQLpublic System.Data.Linq.Tab

12、le Employeesgetreturn this.GetTable();在 LINQ to SQL 中,调用 GetTable 方法,返回实体集合。在 EDM 中,通过 Object Services compoment 执行 Entity SQL 查询,返回 EntityType 的计划 EntitySet。/ Entity Data Modelglobal:System.ComponentModel.BrowsableAttribute(false)public global:System.Data.Objects.ObjectQuery Employeesgetif (this._E

13、mployees = null)this._Employees = base.CreateQuery(Employees);return this._Employees;private global:System.Data.Objects.ObjectQuery _Employees;5) 比较 LINQ to SQL DataContext 和 EDM ObjectContext/ LINQ to SQLSystem.Data.Linq.Mapping.DatabaseAttribute(Name=Northwind)public partial class NorthwindDataCon

14、text : System.Data.Linq.DataContextEDM 有一个类似于 LINQ to SQL DataContext 的 ObjectContext 类,ObjectContext 类是负责与 EDM 中实体类型交互的基本类。ObjectContext 用来创建数据库连接、检索数据、持久化对象、以及对数据库的插入、更新和删除操作。/ Entity Data Modelpublic partial class NorthwindEntities : global:System.Data.Objects.ObjectContextObjectContext 的连接字符串指向元

15、数据(CSDL/SSDL/MSL 文件)和数据源(数据库连接字符串)。connectionString=metadata=.NorthwindModel.csdl|.NorthwindModel.ssdl|.NorthwindModel.msl;provider=System.Data.SqlClient;provider connection string=Data Source=SQLEXPRESS; Initial Catalog=Northwind; Integrated Security=True; MultipleActiveResultSets=True5. Documentat

16、ion 属性EDM 中的实体类型(EntityTypes)、关联和属性有一个 Documentation 属性,对 LINQ to SQL 而言,这是一个新的属性。Documentation 属性将更新生成的 partial 实体类的 XML 注释,可以用来生成代码文档的帮助文件。/ / Employee entity which corresponds with the Northwind.Employees table/ / / EmployeeID/ global:System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName=NorthwindModel, Name=Em

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号