zoukankan      html  css  js  c++  java
  • .NetCore 3.1 教程之 EFCore连接Mysql DBFirst模式 从数据库生成实体

    一:创建EF的类库,同时将此项目设置为启动项(为Scaffold-DbContext -tables指令使用),同时安装2个包  

                ①Microsoft.EntityFrameworkCore.Tools

                ②Pomelo.EntityFrameworkCore.MySql (这个是第三方的ef mysql 中间件)

    例如:

                

    二:生成数据库的实体和EF的DBcontext对象,用到的是 Scaffold-DBcontext命令

                在程序包控制台输入以下命令

                          Scaffold-DbContext -Force  "Server=****;User Id=root;Password=****;Database=****" -Provider "Pomelo.EntityFrameworkCore.MySql"

                          server:数据库地址,User Id:账号,Password:登录密码

                         如果是针对单表的更新,加一个-Tables 后面是要更新的表名

                         Scaffold-DbContext -Force  "Server=****;User Id=root;Password=****;Database=****" -Provider "Pomelo.EntityFrameworkCore.MySql"  -Tables "myTable"

                         执行完成之后会生成指定的是Model ,注意:表必须有主键,才会生成,如果没有主机会报 Unable to generate entity type for table “xxxx” 警告,当然实体也不会生成

                         出现的问题:如果有表字段为 datetime类型的,生成的时候会报错 应输入标识符,处理方法:把.()去掉。此问题如果有大神看到帮忙解答下

                              

                例如:

               

    三:创建标准的web应用,进行使用

           ①在appsettings.json配置数据库的地址信息,注意  SslModel=none例如

     "MySqlConnection": "Database='***';Data Source=****;User ID=***;Password=***;CharSet=utf8;SslMode=None"

     

           ② 在startup.cs 配置注入,其中有用到一些引用 顺手引用一下

        

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void ConfigureServices(IServiceCollection services)
           {
               services.Configure<CookiePolicyOptions>(options =>
               {
                   // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                   options.CheckConsentNeeded = context => true;
                   options.MinimumSameSitePolicy = SameSiteMode.None;
               });
     
               //ef mysql 配置
               services.AddDbContext<drewtestContext>(options => options.UseMySql(Configuration.GetConnectionString("MySqlConnection")));
     
               services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
           }

      ③之后就是标准的调用,例如在控制器中的使用

         

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class HomeController : Controller
       {
           drewtestContext _content;
           public HomeController(drewtestContext context)
           {
               _content = context;
           }
     
           public IActionResult Index()
           {
               List<SctonlyHome> list_sctonlyHomes = _content.SctonlyHome.ToList();
               return View();
           }
       }

    到此就是基础的EF core mysql入门配置了。

    附一些相关教程链接 

    Entity Framework Core

    https://docs.efproject.net
    https://docs.microsoft.com/zh-cn/ef/

    Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
    EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。
    https://docs.microsoft.com/zh-cn/ef/core/

    反向工程
    反向工程是基架实体类型类的过程,以及基于数据库架构的 DbContext 类。 可以使用 Scaffold-DbContext EF Core 包管理器控制台(PMC)工具的命令或 dotnet ef dbcontext scaffold .net 命令行接口(CLI)工具的命令来执行该命令。
    https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli

    EF Core 工具和扩展 NuGet 包
    https://docs.microsoft.com/zh-cn/ef/core/extensions/

    Entity Framework Core 工具参考-Visual Studio 中的包管理器控制台
    https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell

  • 相关阅读:
    [pytorch][模型压缩] 通道裁剪后的模型设计——以MobileNet和ResNet为例
    [面试]DeeCamp2020面试记录
    [python][pytorch]多GPU下的模型保存与加载
    [目标检测][python][cpp]非极大值抑制(NMS)算法原理以及CPP实现
    [pytorch]动态调整学习率
    [pytorch][持续更新]pytorch踩坑汇总
    [CPP]push_back和emplace_back的区别
    [LeetCode in Python] 199 (M) binary tree right side view 二叉树的右视图
    [LeetCode in Python] 5390 (M) minimum number of frogs croaking 数青蛙
    [LeetCode in Python] 1345 (H) jump game iv 跳跃游戏 IV
  • 原文地址:https://www.cnblogs.com/webenh/p/13101011.html
Copyright © 2011-2022 走看看