• ef core 相关


    1、为什么使用ef core?

      市面上orm框架那么多,为何偏偏选择ef,dapper那么好用,性能碾压ef,为什么使用dapper?

      对于这个问题我记得当初一个老师讲entityframework的时候讲过这么一个故事:

        1)一个公司的老板让开发部开发一个软件,一开始的数据库的技术栈:ado.net,当项目真正要用的时候,老板发现sqlserver的费用让他有点不情愿,同样是数据库人家mysql为什么不要钱,所以勒令开发部把数据库换成mysql,从中省下来的钱一部分作为奖金(呵呵哒~),开发部的人当时听了可以啊,有奖金拿,必须换啊,随之而来的是无尽的痛苦,各种语句专属语句不兼容,改了一个星期,勉勉强强能跑了,人累的够呛,项目跑起来后,各种问题随之而来,然而公司并没有熟悉mysql的DBA,运行一周后实在是搞不定了,老板最后决定还是换回sqlserver,又是各种改sql,最后改到人人想吐。

        2)同样尴尬的事儿也在另一个公司发生,但是这个公司的开发者幸福得多,技术栈选了ef,虽然中间也填了很多坑,但是逃过了改sql的命运,老板让从sqlserver 换到 mysql ,开发部要求一周的时间,其实两分钟就ok的事儿,仅仅是替换数据库仅仅换一下连接字符串跟provider(理想情况下是这样的),其余的时间就该他们happy了....。

      当然很多人会说,数据库是一开始就计划好的谁会没事儿换着玩儿,故事始终是故事,我需要的是性能,我就是推崇dapper,好吧,萝卜白菜各有所爱,愿ef越来越好,愿.net越来越好。

    2、ef core实践

      1、开发工具vs code,为什么不用visual studio,宇宙第一IDE,工作中真的可以帮助我们省很多事儿,但是个人练习还是建议不用那么好的IDE,少的自动化,多点手动,记忆更加清晰。

      2、本次使用.net core 2.1+ef core 2.1

      3、使用dotnet tools 创建项目:dotnet new console -o EFCoreTest

      4、加入ef core 的依赖:dotnet add package Microsoft.EntityFrameworkCore,加入对应数据库的实现:dotnet add package Microsoft.EntityFrameworkCore.Sqlite(这里用sqlite,数据库比较轻量级),加入ef的tools:dotnet add package Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.Tools.DotNet,.net core 中用都是用 json 作为配置文件,所以加入Json的Configuration,dotnet add package Microsoft.Extensions.Configuration、Microsoft.Extensions.Configuration.Json;

      5、编写DbContext代码如下:

    appsetting.json: 

    {
      "ConnectionStrings":{
        "SqliteConnectionString":"data source=efcore.db;"
      }
    }

      6、编写model,随意写一个User类

      7、创建一个迁移:dotnet ef migrations add userinit,更新数据库:dotnet ef database update;

      8、使用ef,新增、编辑、查询数据

      9、基本完成,现在出现个情况我们需要在user类中添加一个字段,该如何实现

        1)、在user类中添加想要的字段;

        2)、创建添加字段的迁移:dotnet ef migrations add UserAddCol,更新数据库:dotnet ef database update;

      10、然后继续运行程序即可。

      11、创建的迁移还可以生成脚本文件:dotnet ef migrations script,默认是从迁移的第一步开始,也可指定如:dotnet ef migrations UserInit UserAddCol -o scripts/2018年06月03日.sql

    后记:

      1、ef 简单操作还是非常爽的,减少了很多数据库基本操作

      2、code first 使用migrations实现创建数据库,添加字段等等

      3、官方中文文档

  • 相关阅读:
    vue登录注册及token验证
    react实现登录注册
    React Native仿京东客户端实现(首页 分类 发现 购物车 我的)五个Tab导航页面
    进度条效果
    手风琴切换效果
    React实现了一个鼠标移入的菜单栏效果
    react购物车
    react实现tab切换效果
    网络缓存
    java线程面试手写题
  • 原文地址:https://www.cnblogs.com/wh-blog/p/9130054.html
Copyright © 2020-2023  润新知