.Net Core 2.0 EntityFrameworkCore CodeFirst入門教程

雲霏霏發表於2017-12-02

最近難得有時間閒下來,研究了一下.net core 2.0,總的來說,目前除了一些第三方的庫不支援外,基本上可以滿足我們的專案需求了!

我們就以一個網站開發為例,搭建一個簡單的三層架構,先熟悉一下.net core 2.0的開發流程!

 

 一 、搭建專案框架

 

首先,我們新建專案,如圖:

 

然後,我們分別新增.net core類庫專案,NetCoreDemo.Repository(資料訪問層)和NetCoreDemo.Service(服務層),專案結構如下:

 

 二 、初始化資料庫

專案中, NetCoreDemo.Repository相當於三層中的DAL層,主要是與資料庫互動!為了實現web專案和資料庫解耦,方便將來更好資料庫,我們在NetCoreDemo.Repository中安裝EntiryFrameWorkCore,這裡我們以SQL Server為例,安裝下面兩個安裝包,在程式包管理控制檯執行以下命名或者用Nuget包管理器安裝均可:

Install-package Microsoft.EntityFrameworkCore
Install-package Microsoft.EntityFrameworkCore.SqlServer

然後,我們新建DbContext類,如MyDbContext,繼承自DbContext,程式碼如下:

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;

namespace NetCoreDemo.Repository
{
    public class MyDbContext : DbContext
    {
        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }
        public DbSet<User> Uesrs { get; set; }
    }
}

這裡,我們新建一個User類作為測試,程式碼如下:

public class User
{
     [Key]
     public int Id { get; set; }
     public string UserName { get; set; }
     public string Password { get; set; }
}

 現在,DbContext建好了,下面我們連線資料庫,還差一個資料庫連線字串,這個連線字串我們通常是放在webconfig中的,那麼.net core中應該放到哪裡呢?

我們來到web專案下,看到有一個appsettings.json,裡面內容如下:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

我們就把資料庫連線字串放到這裡吧,改完後,其內容如下:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "SqlServer": "Data Source=.;Initial Catalog=netcore;User Id=sa;Password=123456;"
  } 
}

既然我們是Code First,下面準備建立資料庫,生成表,執行Migration!

我們修改Startup.cs,修改ConfigureServices方法如下:

public void ConfigureServices(IServiceCollection services)
        {
            var connection = Configuration.GetConnectionString("SqlServer");
            services.AddDbContext<MyDbContext>(options =>
                options.UseSqlServer(connection, b => b.MigrationsAssembly("NetCoreDemo")));
            services.AddMvc();
        }

這裡需要注意的是,我們通過Configuration方法讀取appsetting.json中的連線字串,然後呼叫AddDbContext方法,把連線字串傳進去,這裡要設定MigrationsAssembly為當前web專案,(這裡大家可以試一下不設定這個,會報一個錯誤),這是因為我們執行Migration是在web專案下,下面我們開啟DOS視窗,開始 -> 執行 -> CMD,定位到web專案根目錄下,執行如下命令:

dotnet ef migrations add v1

這裡,我們看到出現了錯誤,如圖:

這裡,我們修改專案檔案,在專案上面右鍵,開啟專案檔案,如圖:

 

在裡面新增如下程式碼(任意位置均可):

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
  </ItemGroup>

加完後,如圖:

 

然後,我們再次執行命令:

dotnet ef migrations add v1

如果出現Build faild的錯誤,重新生成一下專案,然後再次執行,執行成功後,如圖:

這一步成功了,也就意味著,我們後面的路會很順利了,下面我們更新到資料庫,執行命令:

dotnet ef database update

等待一小會兒,執行成功後,我們會發現資料庫中已經生成了我們的資料庫和表了,這裡我就不截圖了,上傳圖片實在是太慢了~~

 

 三 、後續工作

 上面,我們已經完成了資料庫的建立,後面就可以開開心心的寫程式碼了~~

 

 作者:雲霏霏

QQ交流群:243633526

 部落格地址:http://www.cnblogs.com/yunfeifei/

 宣告:本部落格原創文字只代表本人工作中在某一時間內總結的觀點或結論,與本人所在單位沒有直接利益關係。非商業,未授權,貼子請以現狀保留,轉載時必須保留此段宣告,且在文章頁面明顯位置給出原文連線。

如果大家感覺我的博文對大家有幫助,請推薦支援一把,給我寫作的動力。

 

相關文章