【无私分享: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