一、EntityFramework(简称“EF”)是什么?
在.NET3.5之前,我们经常编写ADO.NET代码或通过封装好的数据库访问层来与数据库进行交互,进行CRUD操作。这种模式下,我们往往需要手写大量的SQL语句,不但麻烦而且容易出错。在这种背景下,后来微软发布了EntityFramework框架。
EF是一种开源的ORM框架,适合.Net开发,用领域对象(Domain Object)来处理数据,而不需要关注具体的数据库中表和列。
EF框架的开发模式主要包括两种DBFirst和CodeFirst,一种是基于已有的数据库进行开发,一种是基于类生成数据库进行开发。本文我们主要和大家一起学习下DBFirst模式。
二、EF架构组成
1、EDM(实体数据模型): EDM包含三个主要部分——概念模型,映射和存储模型。
概念模型(entity): 概念模型包含了模型类和它们之间的关系。 这将是独立于数据库表设计。
存储模型(data): 存储模型是数据库设计模型,包括表、视图、存储过程、以及它们之间的关系和钥匙。
映射(mapping): 映射由概念模型如何映射到存储模型的信息组成。
2、LINQ To Entity(L2E): L2E是一种的查询实体对象的语言, 它返回在概念模型中定义的实体。
3、Entity SQL: Entity SQL是一个类似于L2E的查询语言。 然而,它比L2E更加复杂。
4、Object Services(对象服务):对象服务是访问数据库中的数据并返回数据的主要入口点。它负责数据实例化,把Entity Client Data Provider(下一层)的数据转换成实体对象。
5、Entity Client Data Provider:主要职责是将L2E或Entity Sql转换成数据库可以识别的Sql查询语句,它通过ADO.Net Data Provider向数据库发送或者索取数据。
6、ADO.Net Data Provider:使用标准的Ado.net与数据库通信。
1.创建web项目
2.基于现有数据库添加模型
1)选择ADO.NET数据模型
2)选择来自数据库的EF设计器
3)新建数据库连接信息(服务器,数据库,用户名和密码)
4)选择你需要的数据表,视图或存储过程
完成以上操作后,点击完成,EF框架会自动帮你在项目中创建已.edmx为后缀的文件。该文件下包含一个继承DbContext类的上下文实例(DbContext是实体类和数据库之间的桥梁)和基于数据库创建的实体模型。
另外,在项目的web.config文件中自动帮我们生成的链接字符串,大家不要轻易去改动,否则会引起报错。
<connectionStrings> <add name="ConnectionString" connectionString="metadata=res://*/EntityDomainModel.csdl|res://*/EntityDomainModel.ssdl|res://*/EntityDomainModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=TEST;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>