当前位置: 首页 > news >正文

(17)ASP.NET Core2.2 EF基于数据模型创建数据库

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.0

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或以上版本测试:

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

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

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


参考文献:
使用新数据库在ASP.NET Core上开始使用EF Corehttps://learn.microsoft.com/zh-cn/aspnet/core/data/ef-rp/intro?view=aspnetcore-9.0&viewFallbackFrom=aspnetcore-2.2&toc=%2Faspnet%2Fcore%2Ftoc.json&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json&tabs=visual-studio

http://www.dtcms.com/a/406880.html

相关文章:

  • 阿里云瓴羊发布企业级AI智能体服务平台AgentOne,成就AI时代的“超级公司”
  • OPENCV摄像头读取视频
  • AIGC——提示词的设计
  • 网站节约化建设swf上传wordpress
  • 如何创建个人网站深圳品牌女装加盟
  • Docker部署的MySQL,如何一键备份Docker中的MySQL?
  • 《基于物理仿真和学习潜投影的机器人触觉感知模拟到真实》ICRA2021论文解读
  • IU5365E:一体化铅酸电池充电管理解决方案
  • 厦门安岭路网站建设oa系统的概念
  • 【C++】如何搞定 C++ 内存管理?
  • 关于做情侣的网站的图片素材网络营销效果评估的作用有哪些
  • 网站制作洋网络泰安最新消息
  • 中科君达视界千眼狼科学仪器赋能“芯屏汽合”制造
  • 案例分享:增材制造的负泊松比材料拉胀测试-VIC-3D高空间分辨率DIC系统在增材制造复杂结构中的应用
  • 安卓接入Max广告源
  • Rockchip平台 Android 11 到 Android 16 系统占用内存对比分析
  • 简洁文章类织梦网站模板郑州企业服务公司
  • 企业网站的需求是什么WordPress網站放ICP
  • Avalonia:创建安卓、Web应用(部署到iis)
  • three.js —— 引入模型
  • 一次跨端数据类型兼容问题的排查与解决(判断类型)
  • Fscan:内网综合扫描工具深度入门指南
  • 什么时候能用ipv6做网站二手房网
  • 免费网站管理系统下载mvc5网站开发实战详解
  • 零基础从头教学Linux(Day 42)
  • 前端拿到标准省市区数据
  • (六)重构的艺术:简化复杂条件逻辑的秘诀
  • 雏光 网络推广 网站建设ps模板素材网站
  • 高可用MySQL的整体解决方案、体系化原理和指导思路
  • yoda_formatting_func函数解析(105)