zoukankan      html  css  js  c++  java
  • 【无私分享:ASP.NET CORE 项目实战(第四章)】Code First 创建数据库和数据表

    目录索引 

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

     

    简介

      本章我们来介绍下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程序包管理器 -> 程序包管理控制台,选择默认项目 srcwkmvc.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 在这个下面,怎么办?

    -Pre ,然后再切换回 srcwkmvc.Data 

    注意:如果系统的 windows power shell 版本是2 要升级成 3 或 4

    成功了!

    然后执行 Update-Database -Verbose

    这是没有创建数据库的权限,我们修改 用户 为管理员 ,重新执行 

    成功,搞定!

    通过dotnet ef 

        这个如何在类库里执行,还是参考上面 微软 给出的两个解决方案,我没有解决,问题不是在于无法执行命令,而是 我的上下文 是在 wkmvc.Data 里面的 ,总是找不到 这个上下文,如果有大神指点一下,我再来修改这篇文章,如果没有就先放放,有机会解决了,再来更新。我们今天来介绍一下,就像微软的 Demo 一样,上下文和 Migrations 都在 srcwkmvc(web) 下面的如何使用:

      我们打开我们要添加Migrations的文件夹(srcwkmvc),选中这个文件夹,按住 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 现在很火热,但是网上的很多资料都是前篇一律的复制,所以有很多问题我也暂时没有解决,希望大家能共同帮助一下!

  • 相关阅读:
    java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
    Lambda表达式详解
    MAC JDK 卸载方法(彻底卸载)
    JAVA final关键字
    JAVA访问权限
    JAVA重写
    JAVA继承
    单例设计模式---懒汉式和饿汉式
    JAVA构造块和静态代码块
    Java static关键字
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5808401.html
Copyright © 2011-2022 走看看