EF框架

实体框架ADO.NET Entity Framework(EF)
一套支持面向数据的软件应用程序开发的技术,可让开发人员使用映射到数据源中的逻辑架构的概念模型。
实体数据模型(Entity Data Model)(EDM)
一个数据模型,用于将应用程序数据定义为公共语言运行时类型和存储结构可以映射到的实体和关系集。
概念架构定义语言(Conceptual schema definition language(csdl)
一种基于XML的语言,可用于定义概念模型的实体类型、关联、实体容器、实体集和关联集(实体)-->业务对象
存储架构定义语言 Store schema definition language(ssdl)
一种基于XML的语言,用于定义存储模型的实体类型、关联、实体容器、实体集和关联集,经常对应于数据库架构(数据存储模型)
映射规范语言 Mapping specification language(msl)
一种基于XML的语言,可用于将概念模型中定义的项映射到存储模型中的项(所以不用去管如何存储数据的)
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 Entity Framework
SqlConnection EntityConnection
SqlCommand EntityCommand
SqlDataReader.EntityDataReader
SqlDataAdapter ObjectContext
ObjectQuery<T>
DataSet Entity
csdl,ssdl,msl
注意:ADO.NET 与ADO.NET Entity Framework是不同的技术,这个对比只是一个帮助理解的比效


一、实体框架(EntityFramework)
Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架,EF是开发可以采用特定于域的对象和属性的形式使用数据,不用开路存储数据的技术数据库表和列。形成了更高一个层面上的抽象,并且能够以相对传统应用程序更少的代码
二、广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个00对象应该不需要要了解任何关系型数据库存储数据的实现细节。表实体和表的相互转化。将实体的变化映射到表中

三、EF工作原理
利用了抽象化数据结构的方式,将每一个数据库对象都转换成应用程序对象,而数据字段都变成了属性,关系则变成了结合属性,让ER模型完全变成数据库对象模型。这样就可以让程序员用最熟悉的语言去操作这些对象,事实上是在操作数据库的变化。在抽象化的结构之下,再结合三层框架让数据访问轻松的实现
四、有常见两种方法来定义数据模型:
1、CodeFirst
使用Code First用代码来定义模型,然后生成数据库
CodeFirst是EntityFramework的一种技术手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,在进行开发;CodeFirst从字面上理解就是代码先行,现在程序中建立要映射到数据库的实体结构,然后EntityFramework可以根据实体结构所对应的数据库
2、ModeFirst
使用Model First用方框和线条来定义模型,然后生成数据库
通过Model First,可以使用实体框架设计器来设计新模型,然后从模型生成数据库架构。模型存储在一个EDMX文件(扩展名为.edmx)中,可在实体框架设计器中查看和编辑。应用程序中用于交互的类是自动从EDMX文件生成的。

五、举例ModelFirst
1、创建ADO.NET 实体数据模型
2、添加实体
3、根据模型生成数据库
4、测试数据库连接
5、数据库生成,会生成对应的数据库脚本语言
举例CodeFirst:
codefirst需要用到数据库访问的饿上下文DBContext对象。结合LINQ进行数据的查询
namespace CodeFirstDatabaseSample
{
class Program
{
static void Main(string[] args)
{
using (var db=new BlogContext())
{
Console.Write("Enter a name for a new blog:");
var name=Console.ReadLine();
var blog=new Blog{Name=name};
db.Blogs.Add(blog);
db.SaveChanges();
var query=from b in db.Blogs orderby b.Name select b;
foreach (var item in query)
{
Console.WriteLine(item.Name);
}
}
}
public class Blog
{
public int BlogId{get;set;}
public string Name{get;set;}
public virtual List<post> Posts{get;set;}
}
public class Post

{
public int PostId{get;set;}
public string Title{get;set;}
public string Content{get;set;}
public int BlogId{get;set;}
public virtual Blog Blog{get;set;}
}
public class BlogContext:DbContext{
public DbSet<blog> Blogs{get;set;}
public DbSet<post> Posts{get;set;}
}
}
}
</post></blog></post>

原文地址:https://www.cnblogs.com/zzp0320/p/6945545.html