.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM