【无私分享:ASP.NET CORE 项目实战(第四章)】Code First 创建数据库和数据表
目录索引
简介
本章我们来介绍下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
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"NETStandard.Library": "1.6.0",
"System.ComponentModel.Annotations": "4.1.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}
}
我们打开工具 -> 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
注意:如果系统的 windows power shell 版本是2 要升级成 3 或 4

成功了!

然后执行 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 创建数据库和数据表的更多相关文章
- 【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右击添加视图,转到试图页等功能图不见了,虽然我 ...
- [转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
本文转自:http://www.cnblogs.com/zhangxiaolei521/p/5808417.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp ...
- 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...
- 【无私分享:ASP.NET CORE 项目实战】目录索引
简介 首先,我们的 [无私分享:从入门到精通ASP.NET MVC] 系列已经接近尾声,希望大家在这个过程中学到了一些思路和方法,而不仅仅是源码. 因为是第一次写博客,我感觉还是比较混乱的,其中 ...
- 【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且 ...
- 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...
- 【无私分享:ASP.NET CORE 项目实战(第十三章)】Asp.net Core 使用MyCat分布式数据库,实现读写分离
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我 ...
- 【无私分享:ASP.NET CORE 项目实战(第十一章)】Asp.net Core 缓存 MemoryCache 和 Redis
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitHub上下载了十几个源码参考, Memory 和 Redis 终于写出一个 ...
- 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...
随机推荐
- "NHibernate.Exceptions.GenericADOException: could not load an entity" 解决方案
今天,测试一个项目的时候,抛出了这个莫名其妙的异常,然后就开始了一天的调试之旅... 花了很长时间,没有从代码找出任何问题... 那么到底哪里出问题呢? 根据下面那段长长的错误日志: -- ::, ...
- 微信公众号开发(一)--验证服务器地址的Java实现
现在主流上都用php写微信公众号后台,其实作为后端语言之一的java也可以实现. 这篇文章将对验证服务器地址这一步做出实现. 参考资料:1.慕课网-<初识java微信公众号开发>,2.微信 ...
- [PHP源码阅读]strpos、strstr和stripos、stristr函数
我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. strpos mixed strpos ( strin ...
- 利用AOP写2PC框架(一)
并不是很想写这个系列,因为这个2pc单独写一个小架构有点鸡肋.不过也不知道写什么了,先写了再说吧. 整个流程如下图: 关于AOP系列的文章很多,我这里也再重复造一下轮子. 首先,我们定义了一个IAop ...
- How ASP.NET Web API 2.0 Works?[持续更新中…]
一.概述 RESTful Web API [Web标准篇]RESTful Web API [设计篇] 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 二.路由 ...
- Entity Framework 6 Recipes 2nd Edition(10-6)译 -> TPT继承模型中使用存储过程
10-6. TPT继承模型中使用存储过程 问题 想在一个TPT继承模型中使用存储过程 解决方案 假设已有如Figure 10-6所示模型. 在模型里, Magazine(杂志) and DVD继承于基 ...
- JavaScript中的apply,call与this的纠缠
1.apply定义 apply:调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数. 语法:apply([thisObj[,argArray]]) thisObj 可选.要用 ...
- VS2010中dll不可用问题
最近做项目的时候,深圳那边提供了一个算法.算法在那边跑的好的很,但是在我这边怎么跑都跑不起来,总是报错:说找不到dll. 1.第一种想法:找不到dll,是不是dll放的位置不对.找了一下目录,导入的路 ...
- Java学习之LinkedHashMap学习总结
前言: 在学习LRU算法的时候,看到LruCache源码实现是基于LinkedHashMap,今天学习一下LinkedHashMap的好处以及如何实现lru缓存机制的. 需求背景: LRU这个算法就是 ...
- SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)
前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...