• 第一篇:Entity Framework 简介


         先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架。要开发ORM框架首先要了解ORM概念。

    ORM 对象关系映射,O(Object) 对象,在项目中就是实体,更加精确的来说就是数据Model,也可以说持久化类。R(Relation) 关系数据,M (Mapping)映射,将对象映射到关系数据,将关系数据映射到对象的过程。

    更加直观理解就是,ORM 就是以OOP思想,产生增删改查SQL语句

    了解ORM概念之后,你会发现,其实ORM框架,主要难点在M映射部分

      O 创建简单的实体对象就可以

      R 关系数据库中数据表

      M 难点要如何把实体对象与关系数据库具体数据表关联起来,然后产生相应数据库操作SQL?

     当时,幸好.NET 有两样技术比较流行

    1. 特性

    2. 反射

    当时主要利用 特性 来标识 实体 映射 具体数据库 TableName ,属性 对应的 具体表的ColumnName,还有主外建,是否自增量,默认值 等等,都用特性来标识。

    将实体,属性上的特性反射后,然后根据增删改查操作方法,就可以产生对应的SQL语句。

    至此一个简单的ORM框架,就有了。

    这几年,.NET 技术有了飞速发展,有很多写得不错的开源组件如雨后春笋般涌现,也包含ORM框架

    Hibernate , Drapper,EntityFramework 等等

    EntityFramework 版本历史简介

    EF版本 .net framework和IDE版本 主要功能
    EF(or EF3.5) Visual Studio 2008 SP1 (.NET 3.5 SP1) 基本的O/R映射支持,使用DB First开发模式
    EF 4 Visual Studio 2010 (.NET 4.0) 支持POCO实体 
    延迟加载 
    提高单元测试能力 
    自定义的代码生成机制 
    支持Model First开发模式
    EF 4.1 NuGet 提供简化的DbContext接口 
    支持Code First开发模式
    EF 4.1.1 过渡版本 支持Power Tools工具
    EF 4.2 过渡版本 解决bug并优化
    EF 4.3 Visual Studio 2010 (.NET 4.0) 基于Code First开发模式的代码迁移策略 Migrations
    EF 4.3.1 Visual Studio 2012 (.NET 4.5) 提供对 LocalDb 数据库的支持
    EF 5 Visual Studio 2012 (.NET 4.5) 提供对枚举类型的支持 
    Table-Valued functions表值函数 
    空间数据类型(spatial types) 
    整体性能优化提升 
    实体模型设计器、多图模型 
    批量导入存储过程
    EF 6 Visual Studio 2013 (.NET 4.5) Power Tools加强 
    EF脱离Visual Studio和.NET通过NuGet单独发布 
    可配置不稳定连接的重试次数等 
    支持.NET 4.5中基于Task的异步编程模式 Async Query and Save 
    优化的配置选项 Code-Based Configuration 
    支持依赖注入和服务定位 Dependency Resolution 
    低级的EF拦截器及SQL日志 Interception/SQL Loggin 
    使用Mock单元测试 
    using a mocking framework or writing your own test doubles 
    使用已有的DbConnection创建DbContext 
    提升事务支持 Improved Transaction Support  
    优化LINQ to Entities查询性能 
    优化(View Generation)性能 
    支持自定义实现Entity的Equals和GetHashCode方法 
    DBSet.AddRange/RemoveRange 
    DbChangeTracker.HasChanges 
    扩展的SqlFunctions,SqlCeFunctions
    EF 6.0.1 Visual Studio 2013 (.NET 4.5) fix some performance issues during warm-up for EF models.
    EF 6.0.2 Visual Studio 2013 (.NET 4.5) The tooling for Visual Studio 2012 and Visual Studio 2013 is 
    available on the Microsoft Download Center. You only need to 
    install the tooling if you want to use Model First or Database First
    EF 6.1 Visual Studio 2013 (.NET 4.5)

    Tooling consolidation provides a consistent way to create a new EF model. This feature extends the ADO.NET Entity Data Model wizard to support creating Code First models, including reverse engineering from an existing database. These features were previously available in Beta quality in the EF Power Tools.

    Handling of transaction commit failures provides theCommitFailureHandler which makes use of the newly introduced ability to intercept transaction operations. The CommitFailureHandler allows automatic recovery from connection failures whilst committing a transaction

    IndexAttributeallows indexes to be specified by placing an [Index] attribute on a property (or properties) in your Code First model. Code First will then create a corresponding index in the database

    The public mapping API provides access to the information EF has on how properties and types are mapped to columns and tables in the database. In past releases this API was internal

    EntityFramework 刚刚出来时,反响就比较不错。那时我有接触一些,不多,也不知道当时为什么这么好的东西,没有深耕一下。

    2014 年,去了一家创业公司,做技术主管,做架构开发,当时定的 ASP.NET MVC 5&Entity Framework 6做开发框架。

    再次了解到EntityFramework的强大。

    Entity Framework 有三种实作方式

    1. DataBase First 数据库先行

    2. Model First  模型先行

    3. Code First 代码先行

    前两种就是拖控件,按照指引一步步,就可以完成Entity Framework 实现。

    Code First 就是代码纯手工打造。

    Entity Framework 介绍暂时介绍完成,我们这个系列实作Entity Framework 方式是Code First,因为Code First 才能更加深入了解Entity Framework 工作原理。

    我们这个系列采用是 Entity Framework 6.1 版本,最后这几个版本区别不大。

    CodePlex : http://entityframework.codeplex.com/

    GitHub : https://github.com/aspnet/EntityFramework/

    开发指南:https://docs.efproject.net/en/latest/

    敬请期待

    第二篇:Entity Framework CodeFirst & Model 映射 

     

  • 相关阅读:
    统一回复《怎么学JavaScript?》
    nodejs配置简单HTTP服务器
    web跨域解决方案
    JavaScript 调试小技巧
    我从编程总结的 22 个经验
    Sublime Text 3103 Crack 破解 注册码(亲测有效)
    mstsc 远程序桌面登录的 c#开发
    突然顿悟的Javascript中的this
    解决Electron加载带jquery的项目报错问题
    ES6+ 开发 React 组件
  • 原文地址:https://www.cnblogs.com/davidzhou/p/5351280.html
Copyright © 2020-2023  润新知