单元测试
业务测试
用内存数据库作为依赖模拟。
Identity/Core 库
UserManager 的实现
参数使用: 依赖注入
FindGenericBaseType 可以获取泛型的参数,再做处理。
UserManager 的测试
依赖项都在单元测试里自行构建
书写原则符合 Setup、Act、Assert
context 是怎么组织的呢?
主要通过继承操作,将上游的 DB 定义传给项目里的 DbContext
IdentityDbContext 继承 IdentityUserContext。
EntityFrameworkCore 文件夹
src/Identity/EntityFrameworkCore/src/IdentityDbContext.cs 负责了用户角色业务上下文的数据库包含那些表、字段定义的内容
src/Identity/EntityFrameworkCore/src/IdentityEntityFrameworkBuilderExtensions.cs 这里完成了 User 业务相关的服务的依赖注入,而 UserManager 的用法是依赖注入 (之前实现业务为什么尽量少用依赖注入呢?因为有多依赖的时候不好处理?启动时加入依赖注入的时候失败?所以把逻辑加入到了控制器里。)
src/Identity/EntityFrameworkCore/src/IdentityUserContext.cs 是用户授权数据库的定义,跟 IdentityDbContext 很相似,但 IdentityUserContext 在 OnModelCreating 的定义更多一些。
src/Identity/EntityFrameworkCore/src/Microsoft.AspNetCore.Identity.EntityFrameworkCore.csproj 分包定义 作为小包使用
src/Identity/EntityFrameworkCore/src/Resources.resx 资源定义
真实的业务封装
src/Identity/EntityFrameworkCore/src/UserOnlyStore.cs
prisma 的定义用于 C#
https://dev.to/prisma/database-migrations-for-net-and-entity-framework-with-prisma-49e0