使用 ASP.NET Core 和 EF Core 结合 Postgresql 和 SQL Server 2016 构建持久层






4.25/5 (8投票s)
本文将介绍如何使用 EF Core 开发 ASP.NET Core 应用程序,我们将演示如何以不同的方式连接到 SQL Server 数据库和 Postgresql 数据库。
必备组件
- Visual Studio 2015 update 3
- .NET Core 1.0
- SQL Server 2014 / 2016 服务器管理工具,带有默认的 localdb
- Postgresql
目录
- 创建数据库:
samplecoreEF
- 创建 ASP.NET Core Web 应用程序:
Samples.AspCoreEF
- 向解决方案添加类库 Core:
Samples.AspCoreEF.DAL.EF
- 创建模型类:
Task
和Person
- 添加上下文:
TaskSystemDbContext
- 通过依赖注入注册上下文类
- 自动创建数据库
- 添加 Web API 控制器并使用 Postman 进行测试
背景
具备 **ASP.NET 和 Entity Framework** 的一些知识。
创建数据库:samplecoreEF
在 PostgreSQL 中创建一个新数据库 “sampleCoreEF
”
在 SQL Server 2016 中创建一个新数据库 “sampleCoreEF
”
创建一个 ASP.NET Core Web 应用程序:Samples.AspCoreEF
我们打开 Visual Studio > 文件 > 新建项目 > 选择 “ASP.NET Core Web 应用程序” > 输入名称 “Samples.AspCoreEF
” & 位置 > 确定。
然后,我们选择模板 “Web 应用程序”,并通过单击确定来确认选择。
向解决方案添加类库 Core:Samples.AspCoreEF.DAL.EF
现在,我们来看一下 Samples.AspCoreEF
项目结构,如下图所示:
Samples.AspCoreEF.DAL.EF
项目将包含我们的 EntityFramework 模型、迁移、上下文……(这就是 DAL 的名称原因:数据访问层)。
创建模型类:Task 和 Person
我们将向 Samples.AspCoreEF.DAL.EF
项目添加 Models 文件夹,其中将包含两个模型:Person.cs 和 Task.cs。
在 project.json 中,我们通过 Visual Studio 2015 中的 NuGet 包管理器控制台安装数据库提供程序的 Entity Framework Core 包。
因此,“project.json” 应包含此内容,以确保我们添加了正确的版本。
添加上下文:TaskSystemDbContext
我们必须添加一个名为 EntityFramework 的新文件夹,我们将在这里添加我们的上下文,如下所示:
因此,我们将拥有此结构
通过依赖注入注册上下文类
现在,我们将处理 ASP.NET Web 应用程序,以便能够注册我们的上下文。
我们将首先添加 Samples.AspCoreEF.DAL.EF
作为 Samples.AspCoreEF
的引用。
之后,我们将添加必要的引用来生成我们的数据库,就像之前一样,因此,我们的 project.json 将具有此外观:
在 Startup.cs 中,我们将添加两个块来向您展示如何以两种不同的方式注册 context
类:所以在这个方法中
public void ConfigureServices(IServiceCollection services)
操作后
services.AddMvc();
我们将添加与 SQL Server 数据库连接相关的此块。
我们将添加与 SQL Server 数据库连接相关的此块。
//Using SQL Server
var sqlconnection = @"Server=(localdb)\v11.0;Database=samplecoreEF;Trusted_Connection=True;";
services.AddDbContext<TaskSystemDbContext>
(dbcontextoption => dbcontextoption.UseSqlServer(sqlconnection));
sqlconnection
是一个硬编码的 string
,我们使用 UseSqlServer
来连接数据库。
但是,最好将此 string
添加到配置文件中,在此之前,我们可以将这些 string
添加到 web.config 中,但在 Core 中,此文件不再存在,但我们可以使用:appsettings.json 文件,您可以在其中添加与您的 web 应用程序相关的所有设置,所以
sqlconnection
是一个硬编码的 string
,我们使用 UseSqlServer
来连接数据库。
但是,最好将此 string
添加到配置文件中,在此之前,我们可以将这些 string
添加到 web.config 中,但在 Core 中,此文件不再存在,但我们可以使用:appsettings.json 文件,您可以在其中添加与您的 web 应用程序相关的所有设置,如下所示:
所以我们将以这种方式在 Startup.cs 中调用它
//Using Postgresql
var connectionString = Configuration["DbContextSettings:ConnectionString"];
services.AddDbContext<TaskSystemDbContext>(
opts => opts.UseNpgsql(connectionString)
);
现在,我们将创建我们的数据库
工具->NuGet 包管理器,然后单击 程序包管理器控制台 菜单
键入 Add-Migration CoreMigration
并按 Enter 键
然后,我们将在解决方案中找到 Migration 文件夹
如果我们检查数据库,我们会发现表已自动添加。
如果数据库存在,我们使用 Update-Database。
有时,我们会遇到如下错误:
因此,要解决它,我们必须以管理员身份重新启动 Visual Studio 并启用迁移。
PM> Enable-Migrations
如果您看到此消息,您需要更新 PowerShell 版本
添加 Web API 控制器并使用 Postman 进行测试
现在,我们将添加一个新的 API 控制器,名为 PersonController
。
并使用 Postman 测试您的 API。