目录

介绍

平台

创建解决方案

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 ApplicationDbContext和Identity

应用初始迁移

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

7. 应用初始身份迁移

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

这会将Identity和migrations表添加到数据库中,更重要的是,确认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)。

复制模型属性,Id和Name.

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

将Entity Framework Core v5.0移至单独的项目相关推荐

  1. Entity Framework Core 2.0的新特性

    虽然EF Core 2.0存在大量槽点,但是它也给出了不少亮点.在本文中,我们将介绍这次发布版的部分亮点. \\ 数据库表切分(Table Splitting) \\ ORM常被吐槽是总是对所请求数据 ...

  2. Entity Framework Core 2.0 特性介绍和使用指南

    前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...

  3. Entity Framework Core 6.0 预览4 性能改进

    起因 微软在Build2021开发者大会上,发布Entity Framework Core 6.0(简称EFCore 6)预览第四版,号称是性能版本,性能提升主要对于Entity Framework  ...

  4. Entity Framework Core 2.0 使用代码进行自动迁移

    一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...

  5. Entity Framework Core 2.0 全局查询过滤器

    本博文翻译自: http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查 ...

  6. Entity Framework Core 3.0 和 Entity Framework 6.3 正式发布

    Entity Framework Core 3.0 和 Entity Framework 6.3 通用版发布了,接下来我们看看它的新内容: Entity Framework Core 3.0 EF C ...

  7. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

  8. Entity Framework Core 7.0 未来规划

    Entity Framework Core 7.0(也称为 EF Core 7 或 EF7)的未来规划.该计划汇集了许多相关意见,并概述了微软打算在何处以及如何投资  EF7. IMPORTANT 此 ...

  9. Entity Framework Core 2.0 使用入门

    本文转载自作者:晓晨Master(李志强) 原文章地址 https://www.cnblogs.com/stulzq/p/7717873.html 一.前言 Entity Framework(后面简称 ...

最新文章

  1. (完全解决)为什么运行.bat批处理文件但是只执行了.bat文件中的第一句(行)命令
  2. 在 VC6 中使用 GdiPlus-使用
  3. 使用 AjaxManager 生成调用服务器端方法的 javascript 函数
  4. 受限Boltzmann机(Restricted Boltzmann Machine)
  5. 蓝桥备赛第二周 前缀和
  6. chrome 使用gpu 加速_一招解决 Chrome / Edge 卡顿缓慢 让浏览器重回流畅顺滑
  7. 互联网晚报 | 11月11日 星期四 | 腾讯第三季度营收1424亿元;华为捐赠百万价值职业技能券;货拉拉成立司机权益保障委员会...
  8. 读懂Android中的代码混淆
  9. test1 exam3编程计算图形的面积
  10. AngularJS Eclipse——新手入门【翻译+整理】
  11. vue国际化高逼格多语言
  12. Dkhadoop虚拟机安装操作演示教程
  13. 英文站变现赚美金的7种方式
  14. 读书笔记5 《精进:如何成为一个很厉害的人》 采铜
  15. hdu1296多项式
  16. 搭建L2TP-***
  17. 麒麟V10下 安装打包程序
  18. Python爬虫实战 | (22)爬取开放服务器的文件
  19. javaSE-String,StringBuffer和StringBuilder
  20. 考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之第三课向量与向量空间

热门文章

  1. java可视化插件_java的WindowBuilder可视化插件
  2. 统计输入的字母 c语言,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  3. php操作xml类,PHP实现的XML操作类【XML Library】
  4. java和线程相关的关键字有哪些_Java中有哪些机制来保证线程安全?synchronized关键字和volatile关键字...
  5. prometheus命令_Prometheus+Grafana 基础及简单搭建
  6. scala 判断字段 是不是 日期类型_scala 使用指南,降低新手入门难度
  7. nginx 日志配置_Nginx记录日志到systemd journal
  8. 手机电脑壁纸!让你的桌面变得超酷
  9. Apple Watch UX流程套件 Fresh模板
  10. 弹窗设计UI素材模板|带你了解下弹窗特性