一.概述

  本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序。使用迁移(migrations)基于数据模型创建数据库,是一种code first模式。可以在Windows 上使用 Visual Studio 2017,或在 Windows、macOS 或 Linux 上使用 .NET Core CLI 来学习。已经安装了NET Core 2.1 SDK,这里使用Visual Studio 2017和sql server 2012演示。

  1.1 创建新项目  

    (1) 打开 Visual Studio 2017

    (2) 选择 ASP.NET Core Web 应用程序。

    (3) 输入 EFGetStarted.AspNetCore.NewDb 作为名称。

    (4) 在新建 ASP.NET Core Web 应用程序 对话框中:

      确保在下拉列表中选择“.NET Core”和“ASP.NET Core 2.2”

      选择“Web 应用程序(模型视图控制器)”项目模板

      确保将“身份验证”设置为“无身份验证”

    (5) 编译

       出错:“任务不支持“SharedCompilationId”参数。请确认该参数存在于此任务中” ,安装如下:

        PM> install-package  Microsoft.Net.Compilers

  1.2 安装 Entity Framework Core

    要安装 EF Core,需要把目标对象的 EF Core 数据库提供程序安装。本篇使用SQL Server数据库,需要安装 SQL Server 提供程序包。

    install-package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.0

  1.3 创建模型

    右键单击“Models”文件夹,然后选择“添加”>“类。输入“Model.cs”作为名称。

    /// <summary>/// 创建模型/// using Microsoft.EntityFrameworkCore;/// </summary>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; }}

  

  1.4 使用依赖注入注册上下文

    服务(例如 BloggingContext)在应用程序启动期间通过依赖关系注入进行注册。 需要这些服务的组件(如 MVC 控制器)可以通过向构造函数或属性添加相关参数来获得对应服务。

        public void ConfigureServices(IServiceCollection services){services.Configure<CookiePolicyOptions>(options =>{// This lambda determines whether user consent for non-essential cookies is needed for a given request.options.CheckConsentNeeded = context => true;options.MinimumSameSitePolicy = SameSiteMode.None;});services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);/*using EFGetStarted.AspNetCore.NewDb.Models;using Microsoft.EntityFrameworkCore; */        var connection = "Data Source = {ip};Initial Catalog = EFGetStarted.AspNetCore.NewDb; User ID = hsr;Password =js*2015;";     services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));}

    上面通过services.AddDbContext< BloggingContext)服务注入到容器中,并使用UseSqlServer 连接方式。我在sql 2012中已手动建立了EFGetStarted.AspNetCore.NewDb库。在生产应用中,通常会将连接字符串放在配置文件或环境变量中。 为简单起见,本篇在代码中定义它。

  1.5 创建数据库

    以下步骤使用迁移Migration创建数据库。根据上面1.3以有的模型。在工具”>“NuGet 包管理器”>“包管理器控制台”,运行以下命令:

   PM> Add-Migration InitialCreateThe Entity Framework Core Package Manager Console Tools don't support PowerShell version 2.0. Upgrade to PowerShell version 3.0 or higher,     restart Visual Studio, and try again.

  解决方案: https://blog.csdn.net/lilinoscar/article/details/81739770

    PM> Add-Migration InitialCreateMicrosoft.EntityFrameworkCore.Infrastructure[10403]Entity Framework Core 2.2.1-servicing-10028 initialized 'BloggingContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer'      with options: None       To undo this action, use Remove-Migration.

      在vs 2017当前项目结构中查看,自动生成二个.cs类, 如下所示:

        

       PM> Update-Database

        

    Add-Migration 命令为迁移搭建基架,以便为模型创建一组初始表。 Update-Database 命令创建数据库并向其应用新的迁移。

  1.6 创建控制器

    生成 Blogs实体 控制器和视图。右键单击“控制器”文件夹,然后选择“添加”>“控制器”

   public class BlogsController : Controller{public BloggingContext BloggingContext { get; }public BlogsController(BloggingContext bloggingContext){this.BloggingContext = bloggingContext;}// GET: /<controller>/public IActionResult Index(){return View();}[HttpGet]public IActionResult Create(){return View();}[HttpPost]public async Task<IActionResult> Create([Bind("Url")] Blog blog){BloggingContext.Add<Blog>(blog);await BloggingContext.SaveChangesAsync();return View();}}

  

  1.7 创建视图

    新建视图,结构目录是:Views-- Blogs-- Create.cshtml

    @model EFGetStarted.AspNetCore.NewDb.Models.Blog;@{<form asp-controller="Blogs" asp-action="Create" method="post" ><p>url: <input type="text" asp-for="Url" /><input type="submit" value="Create" /></p></form>}

   演示如下,点击create按钮,异步调用后台控制器Blogs下的Create的HttpPost特性方法。插入一条数据到Blogs数据表中。

  参考文献:

    官方文档:ASP.NET Core 新建数据库

转载于:https://www.cnblogs.com/MrHSR/p/10333073.html

asp.net core 系列 20 EF基于数据模型创建数据库相关推荐

  1. idea数据库反向生成实体类_asp.net core 系列 21 EF现有数据库进行反向工程

    一.概述 在上篇中使用EF基于数据模型创建数据库, 本篇继续使用 EF 基于数据库创建数据模型. 实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序.已有数据库 ...

  2. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  3. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  4. asp.netcore oracle,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  5. asp连接oracle 服务端,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  6. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」

    5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁. ...

  7. ASP.NET CORE系列【一】搭建ASP.NET CORE项目

    原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug ...

  8. asp.net core 系列 18 web服务器实现

    一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指 ...

  9. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<http://ASP.NET Core 入门到实战>.这个系列主讲http://ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我 ...

最新文章

  1. SPRING STS Virgo OSGI 开发一 : bundle 项目的创建
  2. 页面无刷新ajax上传文件--模拟iframe,超简单
  3. 嵌入式NVR发展浅析
  4. 基于Prometheus的.NET 4.x应用服务监控
  5. 【iOS开发】企业版证书($299)In-House方式发布指南
  6. app爬虫Android 7证书设置
  7. 学校网络认证服务器无响应,校园网常见问题
  8. ImportError: Missing required dependencies [‘pytz‘]
  9. 企业研发人员配备比例_申报高新企业研发人员工资比例
  10. ironpython是什么意思_IronPython .NET Integration官方文档翻译笔记
  11. UE4中实现Cesium 3dtileset的压平
  12. 【JVM技术专题】 深入学习Parallel Scavenge回收器「 原理篇」
  13. 分析Android长按电源键事件并定制长按电源dialog
  14. ubuntu 超好用截图和标记图片工具shutter
  15. 基于python的opencv相机标定(采用黑白棋盘格标定板)
  16. X79主板win10启动卡住问题修复处理
  17. 为什么你的大数据项目会失败?
  18. Pixel 5 root 详细过程
  19. 【K210+micropython】驱动HS420561k-32四位数码管显示数字
  20. terraform登录ec2实例

热门文章

  1. 根据数据表中的存储的方法名称来调用方法
  2. MyEclipse快捷键两篇文章
  3. asp.net实现bt和pt—tracker request
  4. rvest | 网络爬虫初步——使用CSS选择器
  5. PS制作棱镜化多边形照片效果
  6. 如何学习-我是这样学JS理论![不看后悔篇]
  7. 问号后面能加感叹号吗_TOPIK|你还在因为不会用原稿纸而扣分吗
  8. 有哪些网站是django开发的_网站模板建设和定制开发哪个好,有哪些区别?
  9. php 实现二叉树的最大深度_python实现二叉树的遍历以及其他基本操作
  10. Java教程:Java return语句