iT邦幫忙

0

利用EF Core及Scaffolding,快速建立ASP.NET Core Web API

  • 分享至 

  • xImage
  •  

前言

最近接了一個急案,沒辦法浪費太多時間在API的開發上。因緣際會下得知了EF Core這個方便的工具,它可以快速地建立Model,再搭配Scaffolding,短時間內就能產出基本的CRUD。因此我決定將過程記錄下來,希望對其他面臨類似情況的人有所幫助。

本文將從環境建立詳細記錄如何利用EF Core及Scaffolding快速建立API,包括可能遇到的BUG、解決方法、Swagger以及最終成果。

讓我們一同踏上這段API開發之旅吧!

環境建立

  1. 搜尋 ASP.Net Core, 選擇 ASP.Net Core Web 應用程式
    https://ithelp.ithome.com.tw/upload/images/20230801/20161816T9yESpgiLS.png

  2. 設定專案名稱
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816zDqGMyZ8D7.png

  3. 架構選擇.NET Core
    https://ithelp.ithome.com.tw/upload/images/20230810/20161816Za2jCSOxoc.png

使用EF Core快速建立Model

取得連接字串

  1. 開啟SQL Server物件總管拿連接字串,路徑:檢視->SQL Server物件總管
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816E0OPpLEuyH.png

  2. 加入SQL Server,SQL Server物件總管底下的+圖案點下去。

    把自己的資料庫加進來就對了
    https://ithelp.ithome.com.tw/upload/images/20230810/20161816HHnzeBJR5U.png

  3. 選擇你要導入的資料庫,屬性會有寫連接字串。
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816dcOVwIqtbv.png

安裝NuGet套件

路徑:工具->NuGet套件管理員->管理方案的NuGet套件

  1. 搜尋Microsoft.EntityFrameworkCore.SqlServer

    這邊選的是3.1.32的版本
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816FSnhicSqMp.png

  2. 搜尋Microsoft.EntityFrameworkCore.Tools

    這邊選的是3.1.32的版本
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816C6yYNugcfU.png

EF Core反向工程

路徑:工具->NuGet套件管理員->管理方案的NuGet套件

  1. 在套件管理主控台輸入指令。

    Scaffold-DbContext "ConnectionString" -OutputDir Models  Microsoft.EntityFrameworkCore.SqlServer -Force
    
    • ConnectionString請改成自己的連接字串
    • OutputDir為要建立的資料夾名稱,這邊是設定為Models

    如果出現錯誤Keyword not supported: ‘trust server certificate’.,請把連接字串裡的Trust Server Certificate改成TrustServerCertificate,如果Keyword not supported:後面的不是trust server certificate而是application intent之類的,也是同個做法。

    建立成功會有Models的資料夾,裡面會有資料庫所有Table的Model。

建立Controller

  1. 在專案新增Controllers的資料夾。

  2. 對資料夾按右鍵->加入->新增Scaffold項目,選擇使用Entity Framework執行動作的API控制器
    https://ithelp.ithome.com.tw/upload/images/20230810/20161816ZmgE38zA0O.png

  3. 選擇要建立Controller的Model,控制器名稱可以自己取也可以用預設的。
    https://ithelp.ithome.com.tw/upload/images/20230810/20161816uByf8jPeBg.png

  4. 新增後就會幫你寫好簡單的CRUD了!
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816Z1LOknQZgC.png

設定Startup與Swagger

建好Model跟Controller後沒設定Startup還是不能用,所以這邊非常重要!

  1. 安裝Swagger套件,在套件管理器主控台執行以下程式碼:

    Install-Package Swashbuckle.AspNetCore
    
  2. 找到ConfigureServices(IServiceCollection services)的Method,改為以下。

    public void ConfigureServices(IServiceCollection services)
    {
        //{DB}Context請改成剛剛EFCore建的Models裡的{DB}Context。
        //{DB}為資料庫的名稱,EFCore建的Context預設會由資料庫名稱命名。
        services.AddDbContext<{DB}Context>();
        services.AddControllers();
        //Title可以根據你的專案命名
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "Test", Version = v1" });
        });
    }
    
  3. 找到Configure(IApplicationBuilder app, IWebHostEnvironment env)的Method,改為以下。

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            //Test可以根據你的專案命名
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test v1"));
        }
        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
    
  4. Ctrl+F5執行,然後你就會看到找不到網頁ㄏㄏ
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816kDYXfDyVsN.png

  5. 只要在網址後面加上/swagger/index.html就會出現Swagger了!寫好的API都可以直接在這裡測試。
    https://ithelp.ithome.com.tw/upload/images/20230811/20161816jTTbDBaBI6.png

以上就是快速建立API的步驟啦,希望對你們有幫助!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言