将Entity Framework Core v5.0移至单独的项目

目录

介绍

平台

创建解决方案

1. 创建解决方案

2. 将Web应用程序命名为“EFCore5App”

3. 附加信息

4. 构建和运行解决方案

5. Web应用程序现在将包含使用EF Core 5.0的配置

应用初始迁移

6. 转到SQL Server并创建数据库“efcore5db”

7. 应用初始身份迁移

创建单独的存储库项目

8.添加单独的Repository类库

将EF Core移至存储库项目

9. 将NuGet包移动到新的类库

10. 移动数据文件夹的内容

11. 构建并运行解决方案

将新迁移添加到存储库项目

12. 添加新迁移

13. 创建数据实体/模型

14. 将实体/模型添加到迁移

15. 创建迁移

16. 完成


介绍

对于商业应用程序来说,在显示代码所在的同一层和逻辑中不混合数据访问功能是一个基本的架构原则。

Microsoft的官方教程将它们混合在同一个组件中,这是专业开发人员不会做的。Core 5是相当新的,我能找到的唯一其他教程都是由CLI控制的(我们中99%的人肯定只想在 Visual Studio中完成它?)。

因为我最近不得不这么做,我来回思考了很久才找到一条可行的路线,我想我应该把它写下来,以防它对其他人有帮助。

平台

  • Visual Studio 2019
  • .NET Core 5.0
  • SQL Server 2019

创建解决方案

1. 创建解决方案

创建一个新的ASP.NET Core Web应用程序(模型视图控制器):

2. Web应用程序命名为“EFCore5App”

3. 附加信息

  • 对于目标框架,选择 .NET 5.0(当前)
  • 对于身份验证类型,选择个人帐户

大多数商业网站或Extranet将需要经过身份验证的管理员用户或经过身份验证的成员,或两者都需要,因此通过从一开始选择个人帐户,它会导致包含EF Core 5.0依赖项,并使以下步骤更容易。

4. 构建和运行解决方案

检查解决方案构建并成功运行。

5. Web应用程序现在将包含使用EF Core 5.0的配置

相关的方面是:

  • file\Data\00000000000000_CreateIdentitySchema.cs具有在数据库中创建身份(经过身份验证的用户/成员)实体的迁移
  • file\Data\ApplicationDbContext.cs保存连接到数据库的上下文

  • 文件appsettings.json——保存数据库连接字符串。我甚至不理会 LocalDB并立即将其替换为到SQL Server数据库的有效连接字符串

  • 文件Startup.cs ——注册DbContext ApplicationDbContextIdentity

应用初始迁移

6. 转到SQL Server并创建数据库“efcore5db”

7. 应用初始身份迁移

  • 转到工具-> NuGet 包管理器->包管理器控制台
  • 进入更新数据库

这会将Identitymigrations表添加到数据库中,更重要的是,确认EF配置正确并且迁移工作正常。

创建单独的存储库项目

8.添加单独的Repository类库

添加一个名为Repository解决方案的新类库。这是我们要将所有EF Core功能移到的地方。

此外,从Web应用程序中添加对此项目的项目引用。

EF Core移至存储库项目

9. NuGet包移动到新的类库

我们现在将开始将EF Core 5.0功能从Web应用程序移动到新的Repository项目。

  • 转到工具-> NuGet 包管理器->管理解决方案的NuGet...

安装了以下软件包EFCore5App

对于以下三个包中的每一个,选择Repository Install。然后选择EFCore5AppUninstall

  • Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
  • Microsoft.AspNetCore.Identity.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer

此外,安装Microsoft.EntityFrameworkCore.Tools Repository(保留它仍然为Web应用程序安装)。

10. 移动数据文件夹的内容

\Data文件夹的所有内容移动到Repository类库并删除Web应用程序中的Data文件夹。

更新文件中的命名空间:

  • 00000000000000_CreateIdentitySchema.cs
  • 00000000000000_CreateIdentitySchema.Designer.cs
  • ApplicationDbContextModelSnapshot.cs
  • ApplicationDbContext.cs

'.Data'替换命名空间的'.Repository '部分,例如,EFCore5App.Data.Migrations变为 EFCore5App.Repository.Migrations

在文件Startup.cs,添加using EFCore5App.Repository;

11. 构建并运行解决方案

构建解决方案并删除不再需要的using EFCore5App.Data;

将新迁移添加到存储库项目

12. 添加新迁移

Repository类库中,创建一个名为entity的文件夹。

13. 创建数据实体/模型

entity,创建调用的第一个数据模型ContentType(从命名空间中删除.entity)。

复制模型属性,IdName.

14. 将实体/模型添加到迁移

在文件ApplicationDbContext.cs ,为 ContentType添加一个DbSet

15. 创建迁移

  • 转到工具-> NuGet 包管理器->包管理器控制台
  • 将默认项目更改为存储库(重要!):

  • 输入Add-Migration InitialCreate

现在应该将新的迁移添加到Repository项目中:

  • 输入Update-Database

16. 完成

ContentType的表此时应该已经在SQL Server数据库中创建。

https://www.codeproject.com/Tips/5299105/Move-Entity-Framework-Core-v5-0-to-a-Separate-Proj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值