目錄索引 【無私分享:ASP.NET CORE 項目實戰】目錄索引 簡介 本章我們來介紹下Asp.net Core 使用 CodeFirst 創建資料庫和表,通過 控制台 和 dotnet ef 兩種方式 修改EF上下文對象,添加測試類 我修改了一下名字,Domains 改為了 wkmvc.Data ...
目錄索引
簡介
本章我們來介紹下Asp.net Core 使用 CodeFirst 創建資料庫和表,通過 控制台 和 dotnet ef 兩種方式
修改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