【发布时间】:2021-04-16 12:07:27
【问题描述】:
我有两个数据库上下文。
第一: ASP.NET 身份上下文。
public class IdentityContext : IdentityDbContext<IdentityAppUser>
{
public IdentityContext(DbContextOptions options)
: base(options)
{
}
}
身份用户。
public class IdentityAppUser : IdentityUser
{
}
第二: DatabaseContext.
public sealed class DatabaseContext : DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
}
域用户。包含身份用户 ID。
public class User : BaseEntity
{
public string IdentityId { get; set; }
}
我正在使用 CQRS。我想返回完整的用户数据(身份信息 + 域模型信息)。所以我正在考虑实施。
-
保留两个单独的查询。第一个查询返回域用户,第二个返回身份用户。然后在 API 层合并查询结果。
-
为此目的保留单个查询。在应用层保留完整的用户模型。在查询处理程序中将域和身份用户合并到完整模型中。
-
将域用户移至基础设施层。创建包含完整用户信息的新域用户模型。保留单个查询以返回完整的用户数据。在查询处理程序中合并数据库用户模型(旧域用户)和身份用户。
哪种方法更好?
【问题讨论】:
标签: c# asp.net-web-api cqrs onion-architecture