Entity Framework
EF(Entity Framework)是什么?
实体框架EF是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。
主要有三种方式:
Database FirstDatabase First”模式,我们称之为“数据库优先”,前提是你的应用已经有相应的数据库,你可以使用EF设计工具根据数据库生成数据数据类,你可以使用Visual Studio模型设计器修改这些模型之间对应关系。
Model FirstModel First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在Visual Studio中我们通过设计对于的数据模型来生成数据库和数据类。
Code FirstCode First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关心数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。
为什么用EF而不用原生的ADO.NET?
- 极大的提高开发效率:EF是微软自己的产品,开发中代码都是强类型的,写代码效率非常高,自动化程度非常高,命令式的编程.
- EF提供的模型设计器非常强大,不仅仅带来了设计数据库的革命,也附带来的自动化模型代码的功能也极大的提高开发和架构设计的效率.
- EF跨数据支持的是ORM框架主要功能点之一,带来的是可以通过仅仅改变配置就可以做到跨数据库的能力
如何如何获取EF生成的Sql脚本?
- 可以调试起来通过SqlServerProfiler 来获取Sql
- EF Dbcontext 注册日志事件输出日志查看Sql
在哪些类型额项目中你会选择EF? 为什么?
这个要结合EF的特点来说:EF主要是以面向对象的思想来做数据库数据操作,对Sql语句能力没什么要求,开发使用效率高!便于上手,一般来说,使用EF框架,肯定会比直接使用ADO.NET,消耗的时间多一些。 所以在一般企业级开发,管理型系统,对数据性能要求不是特别高的情况下,优先选择EF,这样可以大大的推进开发效率!如果像一些互联网项目中,对性能要求精度很高!可以另外做技术选型,选择原生ADO.NET。
请说明EF中映射实体对象的几种状态?
- Detached:该实体未由上下文跟踪。刚使用新运算符或某个 System.Data.Entity.DbSet Create 方法创建实体后,实体就处于此状态。
- Unchanged:实体将由上下文跟踪并存在于数据库中,其属性值与数据库中的值相同。
- Added:实体将由上下文跟踪,但是在数据库中还不存在。
- Deleted:实体将由上下文跟踪并存在于数据库中,但是已被标记为在下次调用 SaveChanges 时从数据库中删除。
- Modified:实体将由上下文跟踪并存在于数据库中,已修改其中的一些或所有属性值。
如果实体名称和数据库表名不一致,该如何处理?
实体名称和数据库表名称不一致:可以通过使用TableAttribute 特性;
ORM中的延迟加载与直接加载有什麽差别?
延迟加载(Lazy Loading)只在真正需要进行数据操作的时候再进行加载数据,可以减少不必要的开销。