【無私分享:ASP.NET CORE 項目實戰】目錄索引html
本章咱們來介紹下Asp.net Core 使用 CodeFirst 建立數據庫和表,經過 控制檯 和 dotnet ef 兩種方式
git
我修改了一下名字,Domains 改成了 wkmvc.Datagithub
咱們新建一個文件夾 Models 用於存放 模型類web
咱們在Models下面再新建一個文件夾SysModelsMange 用於區域模型類shell
咱們新建一個測試類SYS_USER數據庫
namespace wkmvc.Data.Models
{
public class SYS_USER
{
public int ID { get; set; }
public string USERNAME { get; set; }
}
}json
咱們修改一下上下文 ApplicationDbContext (黃色高亮)windows
using Microsoft.EntityFrameworkCore;
using wkmvc.Data.Models;mvc
namespace wkmvc.Data
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}app
public DbSet<SYS_USER> SYS_USER { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
}
而後打開 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. 也就是 類庫不支持,這裏微軟給出了 兩種解決方案:
1、參考 https://github.com/dotnet/cli/issues/2645.
2、修改類庫項目爲「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
注意:若是系統的 windows power shell 版本是2 要升級成 3 或 4
成功了!
而後執行 Update-Database -Verbose
這是沒有建立數據庫的權限,咱們修改 用戶 爲管理員 ,從新執行
成功,搞定!
這個如何在類庫裏執行,仍是參考上面 微軟 給出的兩個解決方案,我沒有解決,問題不是在於沒法執行命令,而是 個人上下文 是在 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