衡州网站建设seo,免费cms网站管理系统,官方网站下载打印机驱动程序,wordpress招商什么是Entity Framework呢#xff08;下面简称EF#xff09;#xff1f; EF#xff08;实体框架#xff09;是ADO.NET中的一组支持开发面向数据的软件应用程序的技术#xff0c;是微软的一个ORM框架。ORM#xff08;对象关系映射框架#xff09;#xff1a;指的是面向… 什么是Entity Framework呢下面简称EF EF实体框架是ADO.NET中的一组支持开发面向数据的软件应用程序的技术是微软的一个ORM框架。ORM对象关系映射框架指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 如此官方的解释你懂吗 我理解的是业务实体在内存中表现为对象在数据库中表现为数据内存中的对象之间存在关联和继承关系而在数据库中关系数据无法直接表达这些关系。而对象-关系映射ORM就是解决这一问题的。ORM作为一个中间件实现程序对象到关系数据库的数据映射。那么EF也就是一种实现数据库和程序中的实体相互映射的一种工具。我的理解如果有误欢迎指出 EF的核心是什么呢 EF的核心就是EDM实体数据模型EDM是一个规范用于定义由实体框架基础上生成的应用程序使用的数据。使用EDM 的应用程序在设计架构中定义应用程序域中的实体和关系。设计架构用于生成由应用程序代码使用的可编程类。在此模型中持久保留应用程序数据的存储结构由另一个架构称为存储架构表示。映射规范用于连接设计架构与存储架构。简单理解就是定义出实体和数据库的对应关系。 EDF有三个概念组成概念模型概念架构定义语言文件[.csdl]、映射映射规范语言文件[.msl]、以及存储模型存储架构定义语言文件[.ssdl]。这三者结合在一起就是EDM模式。EDM模式在项目中的表现形式就是扩展名为.edmx的文件。这个包含EDM的文件可以使用vs中的EDM设计器来设计由于这个文件本事就是XML文件可以手工编辑此文件来自定义csdl、msl与ssdl这三部分。 EDM——CSDL CSDL定义了EDM或者说是整个程序的灵魂部分——概念模型。概念模型可以理解为实体类。实体类是面向对象设计中一个最根本的组成部分其提前了显示世界中对象作为一种计算中可以表示的对象设计方法。而EDM的CSDL就是要达到这样一个目的。简单说就是通过实体达到一种数据转存或存储或更新从而进行计算。 代码结构Schema是CSDL的根元素其中定义的Namespace是用于ObjectContext与EntityClass的命名空间Alias-别名为此命名空间Namespace指定一个易记的名称在定义Alias之后在此Schema内的Element均可以该Alias作为Namespace的别名。代码示例如下 !-- SSDL content --edmx:StorageModelsSchema NamespacenewssystemModel.Store ProviderSystem.Data.SqlClient ProviderManifestToken2008 AliasSelf xmlns:storehttp://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator xmlns:customannotationhttp://schemas.microsoft.com/ado/2013/11/edm/customannotation xmlnshttp://schemas.microsoft.com/ado/2009/11/edm/ssdlEntityType NamecategoryKeyPropertyRef Nameid //KeyProperty Nameid Typeint StoreGeneratedPatternIdentity Nullablefalse /Property Namename Typevarchar MaxLength200 Nullablefalse //EntityType
span stylewhite-space:pre /span!--省略N个EntityType和Association--Association NameFK_news_categoryEnd Rolecategory TypeSelf.category Multiplicity0..1 /End Rolenews TypeSelf.news Multiplicity* /ReferentialConstraintPrincipal RolecategoryPropertyRef Nameid //PrincipalDependent RolenewsPropertyRef NamecaId //Dependent/ReferentialConstraint/AssociationEntityContainer NamenewssystemModelStoreContainerEntitySet Namecategory EntityTypeSelf.category Schemadbo store:TypeTables /EntitySet Namecomment EntityTypeSelf.comment Schemadbo store:TypeTables /EntitySet Namenews EntityTypeSelf.news Schemadbo store:TypeTables /EntitySet Namesysdiagrams EntityTypeSelf.sysdiagrams Schemadbo store:TypeTables /AssociationSet NameFK_comment_news AssociationSelf.FK_comment_newsEnd Rolenews EntitySetnews /End Rolecomment EntitySetcomment //AssociationSetAssociationSet NameFK_news_category AssociationSelf.FK_news_categoryEnd Rolecategory EntitySetcategory /End Rolenews EntitySetnews //AssociationSet/EntityContainer/Schema/edmx:StorageModels EDM——SSDL 这个文件描述了表、列、关系、主键及索引等数据库中存在的概念。SSDL的代码结构与CSDL相似。 EDM——MSL 这个文件及上面所述的CSDL和SSDL的对应主要包括CSDL中属性与SSDL中列的对应。MSL的根节点为Mapping其中可以包含多个EntityContainerMapping可以只有一个每一个EntityContainerMapping对应着两个分别来自CSDL与SSDL的EntityContainer。这个EntityContainerMapping就是描述这两个EntityContainer间的对应。下面再给出一段代码展示EntityContainerMapping的基本格式。 EF实例 例子如下 操作数据库 实现增删改查 static void Main(string[] args){//所有对数据库的操作第一就是创建数据访问 的上下文newssystemEntities dbContext new newssystemEntities();#region 增加///修改category category new category();//category.id 9;category.name 岁半;//dbContext.Entrycategory(category).State System.Data.EntityState.Modified;dbContext.Entrycategory(category).State EntityState.Added;dbContext.SaveChanges(); #endregion#region 修改///修改category category new category();category.id 30;category.name 新新闻;dbContext.Entrycategory(category).State System.Data.EntityState.Modified;//dbContext.Entrycategory(category).State EntityState.Added;dbContext.SaveChanges();#endregion#region 删除///修改category category new category();category.id 30;//category.name 新新闻;// dbContext.Entrycategory(category).State System.Data.EntityState.Modified;dbContext.Entrycategory(category).State EntityState.Deleted ;dbContext.SaveChanges();#endregion#region 查询并修改//查询出来实体默认就是跟踪状态var item dbContext.category.FirstOrDefault();item.name lirui;//只要改属性那么就会自动将此实体的状态改为ModifieddbContext.SaveChanges(); #endregion} EF的优点和缺陷 优点可以把实体类的定义有一个单独的项目使用C#class完成这样一种设计方式转变为使用xml文件定义并集成到数据访问层。以通过动态更改EDM的方法来增加实体并将其映射到数据库。便于修改数据库等等。 不足Entity Framework技术的效率问题是其几乎唯一一个稍有不足之处。首先其将EntitySQL转换为SQL的方式属于解释性转换性能较差。另外Entity Framework在每次应用启动时需要读取EDM这个过程较慢但在后续操作时就不再存在这个问题。