目录
介绍
平台
创建解决方案
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
创建一个新的ASP.NET Core Web应用程序(模型视图控制器):
- 对于目标框架,选择 .NET 5.0(当前)
- 对于身份验证类型,选择“个人帐户”
大多数商业网站或Extranet将需要经过身份验证的管理员用户或经过身份验证的成员,或两者都需要,因此通过从一开始选择“个人帐户”,它会导致包含EF Core 5.0依赖项,并使以下步骤更容易。
检查解决方案构建并成功运行。
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
- 转到工具-> NuGet 包管理器->包管理器控制台
- 进入更新数据库
这会将Identity和migrations表添加到数据库中,更重要的是,确认EF配置正确并且迁移工作正常。
添加一个名为Repository解决方案的新类库。这是我们要将所有EF Core功能移到的地方。
此外,从Web应用程序中添加对此项目的项目引用。
将EF Core移至存储库项目 9. 将NuGet包移动到新的类库我们现在将开始将EF Core 5.0功能从Web应用程序移动到新的Repository项目。
- 转到工具-> NuGet 包管理器->管理解决方案的NuGet包...
安装了以下软件包EFCore5App:
对于以下三个包中的每一个,选择Repository 和Install。然后选择EFCore5App和Uninstall。
- 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.
在文件ApplicationDbContext.cs 中,为 ContentType添加一个DbSet。
- 转到工具-> NuGet 包管理器->包管理器控制台
- 将默认项目更改为存储库(重要!):
- 输入Add-Migration InitialCreate:
现在应该将新的迁移添加到Repository项目中:
- 输入Update-Database:
表ContentType的表此时应该已经在SQL Server数据库中创建。
https://www.codeproject.com/Tips/5299105/Move-Entity-Framework-Core-v5-0-to-a-Separate-Proj