65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (8投票s)

2016 年 10 月 13 日

CPOL

3分钟阅读

viewsIcon

19858

本文将介绍如何使用 EF Core 开发 ASP.NET Core 应用程序,我们将演示如何以不同的方式连接到 SQL Server 数据库和 Postgresql 数据库。

必备组件

  • Visual Studio 2015 update 3
  • .NET Core 1.0
  • SQL Server 2014 / 2016 服务器管理工具,带有默认的 localdb
  • Postgresql

目录

  1. 创建数据库:samplecoreEF
  2. 创建 ASP.NET Core Web 应用程序:Samples.AspCoreEF
  3. 向解决方案添加类库 Core:Samples.AspCoreEF.DAL.EF
  4. 创建模型类:TaskPerson
  5. 添加上下文:TaskSystemDbContext
  6. 通过依赖注入注册上下文类
  7. 自动创建数据库
  8. 添加 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.csTask.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。

参考文献

© . All rights reserved.