【无私分享:ASP.NET CORE 项目实战(第五章)】Code First 创建数据库和数据表

目录索引 

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

时间: 2024-09-29 12:35:47

【无私分享:ASP.NET CORE 项目实战(第五章)】Code First 创建数据库和数据表的相关文章

【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右击添加视图,转到试图页等功能图不见了,虽然我们可以通过工具栏的自定义命令,把这两个右击菜单添加上,但是貌似是灰色的不能用. 其实,这样也好,通过手动创建,更让我们深刻的理解MVC以及路由之间的关系,很多人认为底层的东西是高大上的,比如一提到汇编,很多人感觉牛的不行不行的,其实术业有专攻,做程序的感觉搞核电的很牛,搞核电的同样也感觉做程序的很牛

[转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper

本文转自:http://www.cnblogs.com/zhangxiaolei521/p/5808417.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在Asp.net Core VS2015中,我们发现还有很多不太简便的地方,比如右击添加视图,转到试图页等功能图不见了,虽然我们可以通过工具栏的自定义命令,把这两个右击菜单添加上,但是貌似是灰色的不能用. 其实,这样也好,通过手动创建,更让我们深刻的理解MVC以及路由之间的关系,很多人认为底层的东西是高大上

【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前的习惯,我们还是新建几个文件夹 Commons:存放帮助类 Domians:数据模型 Services:接口和实现类 我们在Domains文件夹下添加一个类库 Domain 我们新建一个类 ApplicationDbContext 继承 DbContext 1 using Microsoft.Ent

【无私分享:ASP.NET CORE 项目实战(第四章)】Code First 创建数据库和数据表

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 本章我们来介绍下Asp.net Core 使用 CodeFirst 创建数据库和表,通过 控制台 和 dotnet ef 两种方式 修改EF上下文对象,添加测试类 我修改了一下名字,Domains 改为了 wkmvc.Data 我们新建一个文件夹 Models 用于存放 模型类 我们在Models下面再新建一个文件夹SysModelsMange 用于区域模型类 我们新建一个测试类SYS_USER namespace wkm

【无私分享:ASP.NET CORE 项目实战】目录索引

简介 首先,我们的  [无私分享:从入门到精通ASP.NET MVC]   系列已经接近尾声,还有个项目管理系统就基本完工,完工之后整套项目的源码(包括UI)和数据库都会分享给大家,希望大家在这个过程中学到了一些思路和方法,而不仅仅是拿到源码. 因为是第一次写博客,我感觉还是比较混乱的,其中很多东西没有讲明白,还有很多帮助类有的过时了,有的只是分享并没有详细解释.今天,我们用Asp.net Core 重新开发这个项目,这是个新的东西,我也是刚刚接触,还是有很多东西没有理解,我们这次从UI到后端源

【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且不论.分布式数据库,我们采用的是阿里云的Mycat,这个后面会更新出来.我们今天的场景是:我们的项目可能是在windows上开发的使用的是SqlServer,我们要发布到linux上,SqlServer 2017 据说是支持liunx的,但是还没出... 当然不是说 SqlServer 就不能装在l

【无私分享:ASP.NET CORE 项目实战(第五章)】Repository仓储 UnitofWork

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 本章我们来创建仓储类Repository 并且引入 UnitOfWork 我对UnitOfWork的一些理解  UnitOfWork 工作单元,对于这个的解释和实例,网上很多很多大神之作,我在这就不班门弄斧了,只是浅谈 一下个人理解,不一定对,希望大家指正: UnitOfWork 看了很多,个人理解就是 统一事务,在很多操作中我们可能是进行多项操作的,比如 同时保存两个表的数据,如果我们先保存一个表(SaveChanges

【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生了问题:我们使用的是在 Startup.cs 中(如下图)来实现配置读取,有两个问题 ① 我们如果定义N种配置,是否要再这里添加N条这样的配置 : ② 如果我们的配置不想写在appsettings.json中呢 解决问题 带着上面的两个问题,我们首先来添加一个配置文件 siteconfig.json

【无私分享:ASP.NET CORE 项目实战(第三章)】EntityFramework下领域驱动设计的应用

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在我们 [无私分享:从入门到精通ASP.NET MVC] 系列中,我们其实也是有DDD思想的,但是没有完全的去实现,因为并不是所有的好的东西都必须要用到的,还是根据实际情况,DDD在大型的系统中是非常好的一种设计思想,这点不否认.但是根据具体情况而言,在我们小型的项目中,我们设计框架的更多考虑的是让使用者快速.便捷的开发,能快速的了解框架进行项目开发. 重构我们的思路 最近研究了一下几位大神的博客,特别是:@腾飞(Jess