1.简介

使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序。使用迁移(Migrations)基于数据模型创建数据库,你可以在Windows上使用Visual Studio 2017 PowerShell或在Windows、macOS或Linux上使用.NET Core CLI来学习创建数据库。

2.创建新项目

2.1系统必备

在创建新项目之前都要检查是否安装以下软件:
●具有以下工作负载的Visual Studio 2017 15.7版或更高版本(Visual Studio必备):
  ○“ASP.NET和Web开发”(位于“Web 和云”下)
  ○“.NET Core跨平台开发”(位于“其他工具集”下)
●.NET Core 2.1 SDK.(Visual Studio、CLI必备)

2.2 创建项目

Core MVC项目可以通过Visual Studio手动来创建,也可以通过在CLI输入命令行来创建,两者区别是前者限制在Windows平台上创建项目,后者是可以跨平台创建项目。

2.2.1Visual Studio手动来创建项目

●打开Visual Studio 2017
●“文件”>“新建”>“项目”。
●从左菜单中选择“其他项目类型”>“Visual Studio 解决方案”。
●点击新建解决方案右键选择“添加”>“新建项目”>“已安装”>“Visual C#”>“.NET Core” 。
●选择“ASP.NET Core Web 应用程序”。
●输入“MyCoreWeb”自定义名称,然后单击“确定”。
●在“新建ASP.NET Core Web应用程序”对话框中:
  ○确保在下拉列表中选择“.NET Core”和“ASP.NET Core 2.1”
  ○选择“Web 应用程序(模型视图控制器)”项目模板
  ○确保将“身份验证”设置为“不进行身份验证”
  ○单击“确定”
警告:如果你使用“单独用户帐户”(而不是“无”)进行身份验证,Entity Framework Core模型会添加到Models\IdentityModel.cs中的项目。

2.2.2通过在CLI输入命令行来创建项目

运行以下命令以创建MVC项目:

dotnet new mvc -n MyCoreWeb

更改为项目目录,你输入的下一个命令需要针对新项目运行:

cd MyCoreWeb

3.安装Entity Framework Core

要安装EF Core,请为要作为目标对象的EF Core数据库提供程序安装程序包。有关可用提供程序的列表,请参阅数据库提供程序。因为我本机是用SqlServer数据库,所以可以通过以下两种方式安装EF Core。

3.1在包管理器控制台输入命令来安装程序包(“工具”>“NuGet包管理器”>“程序包管理器控制台”)

install-package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.

3.2通过在CLI输入命令行来安装程序包

--更改为项目所在目录
cd /d D:\Project\MyCoreWeb
--输入CLI命令安装程序包
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

4.创建模型

在Models文件夹下创建BloggingContext.cs文件,为了简单起见,我们都将Blog、Post实体代码写在BloggingContext.cs文件中:

public class BloggingContext : DbContext
{
public BloggingContext(DbContextOptions<BloggingContext> options): base(options){ }
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public ICollection<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}

5.使用依赖注入注册上下文

在应用程序启动过程中,通过依赖关系注入注册服务(如 BloggingContext),以便能够通过构造函数的参数和属性向使用服务的组件(如 MVC 控制器)自动提供该服务。如果想要在MVC控制器里面调用BloggingContext.cs,那么就要在Startup.cs中将其注册为服务。

public void ConfigureServices(IServiceCollection services)
{
var connection = @"Server=.;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0";
services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
}

为简单起见,这里把连接字符串直接在代码中定义。但是通常是会将连接字符串放在配置文件或环境变量中。例如:

appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"BloggingDatabase": "Server=.;Database=Blogging;Trusted_Connection=True;"
}
}

Startup.cs中其注册的服务代码为:

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}

6.迁移创建数据库(重点)

这个章节比较重要,下面让我们来学习下如何迁移创建数据库。

6.1Visual Studio PowerShell手动来创建项目(“工具”>“NuGet包管理器”>“程序包管理器控制台”)

Add-Migration InitialCreate
Update-Database

如果收到错误,指出The term 'add-migration' is not recognized as the name of a cmdlet,请关闭并重新打开Visual Studio。
Add-Migration命令为迁移搭建基架,以便为模型创建一组初始表。Update-Database命令创建数据库并向其应用程序新的迁移。
因为程序包管理器不支持PowerShell 2.0版本的迁移,需要升级到3.0版本,所以这里就暂时演示不了,请大家自行升级3.0或以上版本测试。

或者收到这样错误,无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

请在PowerShell输入如下命令行:Import-Module C:\Users\用户名\.nuget\packages\microsoft.entityframeworkcore.tools\3.1.0\tools\EntityFrameworkCore.psd1,再执行如上命令即可。

6.2通过在CLI输入命令行来迁移

--更改为项目所在目录
cd /d D:\Project\MyCoreWeb
--迁移搭建基架
dotnet ef migrations add InitialCreate
--创建数据库并向其应用程序新的迁移
dotnet ef database update

下面我们来看看迁移创建数据库效果:

参考文献:
使用新数据库在ASP.NET Core上开始使用EF Core

(17)ASP.NET Core EF基于数据模型创建数据库的更多相关文章

  1. asp.net core 系列 20 EF基于数据模型创建数据库

    一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序.使用迁移(migrations)基于数据模型创建数据库,是一种cod ...

  2. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  3. asp.net core+ef core

    asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...

  4. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  5. ASP.NET Core WebApi基于JWT实现接口授权验证

    一.ASP.Net Core WebApi JWT课程前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再 ...

  6. ASP.NET Core WebApi基于Redis实现Token接口安全认证

    一.课程介绍 明人不说暗话,跟着阿笨一起玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NET WebSer ...

  7. asp.net core 自定义基于 HttpContext 的 Serilog Enricher

    asp.net core 自定义基于 HttpContext 的 Serilog Enricher Intro 通过 HttpContext 我们可以拿到很多有用的信息,比如 Path/QuerySt ...

  8. 学习ASP.NET Core Razor 编程系列六——数据库初始化

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  9. ASP.Net Core 2.2使用SQLite数据库unable to open database file

    原文:ASP.Net Core 2.2使用SQLite数据库unable to open database file 最近把项目更新到了ASP.Net Core 2.2,发布之后发现在IIS下使用SQ ...

随机推荐

  1. 第九章 webase 分布式中间件平台快速部署

    鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 参考资料:https://webasedoc.r ...

  2. 使用WebService发布soap接口,并实现客户端的https验证

    什么是https HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证. 如何进行身份验证? 首先我们要明白什么是对称 ...

  3. Shell文件

    #!/bin/bashecho "======================欢迎来到进爷故事会======================="echo "******* ...

  4. Spark第一周

    Why Scala 在数据集不是很大的时候,开发人员可以使用python.R.MATLAB等语言在单机上处理数据集.但是在大数据时代,数据集少说都是TB.PB级别,此时便需要分布式地处理.相较于上述语 ...

  5. Excel催化剂开源第26波-Excel离线生成二维码条形码

    在中国特有环境下,二维码.条形码的使用场景非常广泛,因Excel本身就是一个非常不错的报表生成环境,若Excel上能够直接生成二维码.条形码,且是批量化操作的,直接一条龙从数据到报表都由Excel完成 ...

  6. ASP.NET登录验证码解决方案

    目录 #验证码效果图 #代码 0.html代码 1.Handler中调用验证码生成类 2.验证码图片绘制生成类 3.高斯模糊算法类 #注意 #参考 在web项目中,为了防止登录被暴力破解,需要在登录的 ...

  7. Linux中的update和upgrade的作用

    update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包.update是下载源里面的metad ...

  8. Java emoji持久化mysql

    好久没有更新博客了,今天和大家分享一个关于emoji表情持久化问题,相信做web开发的都遇到过这样的问题,因为我们知道mysql的utf-8字符集保存不了保存不了表情字符,这是为什么呢?因为普通的字符 ...

  9. 牛客第十场Rikka with Prefix Sum

    由于其中的2操作非常多,我们就需要将其快速的更改,就会用到组合数的东西 其实自己手写一下就可以发现对于一个点增加的值在经过不断地前缀和累加过程中对于一点的贡献满足杨辉三角 所以我们就需要记录一下其中的 ...

  10. JS制作简易的考试答题管理系统

    答题卡系统: 网站运行效果 代码区域: HTML 代码: <style type="text/css"> body { font-size: 30px; backgro ...