【無私分享:ASP.NET CORE 項目實戰(第五章)】Code First 建立資料庫和資料表

來源:互聯網
上載者:User

標籤:

 目錄索引 

 

【無私分享:ASP.NET CORE 項目實戰】目錄索引

 

簡介

 

  本章我們來介紹下Asp.net Core 使用 CodeFirst 建立資料庫和表

 

 

修改EF內容物件,添加測試類別

 

  我修改了一下名字,Domains 改為了 wkmvc.Data

  我們建立一個檔案夾 Models 用於存放 模型類

  我們在Models下面再建立一個檔案夾SysModelsMange 用於地區模型類

  我們建立一個測試類別SYS_USER

 

  namespace wkmvc.Data.Models
   {
    public class SYS_USER
    {
      public int ID { get; set; }
      public string USERNAME { get; set; }
    }
  }

  

我們修改一下上下文 ApplicationDbContext (黃色高亮)

 

 

  using Microsoft.EntityFrameworkCore;
  using wkmvc.Data.Models;

 

  namespace wkmvc.Data
  {
    public class ApplicationDbContext : DbContext
    {
      public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
      : base(options)
      {
      }

 

      public DbSet<SYS_USER> SYS_USER { get; set; }

 

      protected override void OnModelCreating(ModelBuilder builder)
      {

 

        base.OnModelCreating(builder);
      }
    }
  }

 

 

添加依賴包,通過控制台執行Add-Migration

然後開啟 wkmvc.Data 類庫下面的 project.json 添加 Microsoft.EntityFrameworkCore.SqlServer 和  Microsoft.EntityFrameworkCore.Tools

 

 1 { 2   "version": "1.0.0-*", 3  4   "dependencies": { 5     "Microsoft.EntityFrameworkCore": "1.0.0", 6     "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 7     "NETStandard.Library": "1.6.0", 8     "System.ComponentModel.Annotations": "4.1.0" 9   },10 11   "frameworks": {12     "netstandard1.6": {13       "imports": "dnxcore50"14     }15   },16   "tools": {17     "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"18   }19 }

 

我們開啟工具 ->  NuGet封裝管理員 -> 程式包管理主控台,選擇預設項目 src\wkmvc.Data

 

 

輸入命令:Add-Migration Migrations

 

沒有識別命令?翻閱微軟的官方文檔,大部分是使用 dotnet ef(稍後介紹) 命令的,找到一篇 

 

在控制台執行一下這個語句 Install-Package Microsoft.EntityFrameworkCore.Tools -Pre ,出錯了, 還原失敗,.NET Core CLI does not support running commands on class libraries as of Preview 2. Despite being able to install EF tools, executing commands may throw this error message. 也就是 類庫不支援,這裡微軟給出了 兩種解決方案:

 

一、參考 https://github.com/dotnet/cli/issues/2645.

二、修改類庫項目為“app”項目,並且使用上下文工廠 IDbContextFactory<TContext>,微軟文檔地址:https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html?highlight=migrations#common-errors

 

我參考第二種嘗試了一下,確實可以了,但是 當我添加一個新的類庫 ,然後引用 wkmvc.Data的時候不行了,類庫無法引用 app項目,但是我們的上下文 ApplicationDbContext 在這個下面,怎麼辦?

無奈了,我嘗試在 wkmvc 下面 添加 Microsoft.EntityFrameworkCore.Tools 試試,將控制台 預設項目改為 src\wkmvc 執行  Install-Package Microsoft.EntityFrameworkCore.Tools -Pre ,然後再切換回 src\wkmvc.Data 

 

 

成功了!莫名其妙,我也不懂什麼原理,反正是成功了

 

然後執行 Update-Database -Verbose

 

 

這是沒有建立資料庫的許可權,我們修改 使用者 為管理員 ,重新執行 

 

 

成功,搞定!

 

通過dotnet ef 

    這個如何在類庫裡執行,還是參考上面 微軟 給出的兩個解決方案,我沒有解決,問題不是在於無法執行命令,而是 我的上下文 是在 wkmvc.Data 裡面的 ,總是找不到 這個上下文,如果有大神指點一下,我再來修改這篇文章,如果沒有就先放放,有機會解決了,再來更新。我們今天來介紹一下,就像微軟的 Demo 一樣,上下文和 Migrations 都在 src\wkmvc(web) 下面的如何使用:

  我們開啟我們要添加Migrations的檔案夾(src\wkmvc),選中這個檔案夾,按住 Shift 右擊,選擇 在此處開啟命令視窗(W)

   輸入dotnet ef --help 

  

    這裡,文檔說的很清楚,我們需要進行幾步操作:

   ①  添加 Microsoft.EntityFrameworkCore.Tools 

   

   ② 添加 Microsoft.EntityFrameworkCore.Design

 

   然後再次執行 dotnet ef --help 

 

 

說明成功了,我們添加Migrations 

輸入: dotnet ef migrations add Migrations

 

 

添加完成,我們可以執行 dotnet ef database update 等其它操作了,詳細參考 https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html?highlight=migrations#usage

 

 

 

 

希望跟大家一起學習Asp.net Core 

剛開始接觸,水平有限,很多東西都是自己的理解和翻閱網上大神的資料,如果有不對的地方和不理解的地方,希望大家指正!

雖然Asp.net Core 現在很火熱,但是網上的很多資料都是前篇一律的複製,所以有很多問題我也暫時沒有解決,希望大家能共同協助一下!

 

原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com

 

【無私分享:ASP.NET CORE 項目實戰(第五章)】Code First 建立資料庫和資料表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.