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 Core
来源: https://www.cnblogs.com/wzk153/p/11376869.html