c# - 如何使用自动映射器映射多对多属性?
问题描述
我想用 AutoMapper 将我的许多对象映射到对象,但无法创建。
我正在使用 Entity Framework Core 3.0 版本。
我的实体:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<UserRole> UserRoles { get; set; }
}
public class UserRole
{
public int UserId { get; set; }
public int RoleId { get; set; }
public DateTime DateAttached { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<UserRole> UserRoles { get; set; }
}
我的 dto:
public class RolesOfUserViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime DateAttached { get; set; }
public ICollection<UserRole> UserRoles { get; set; }
}
所以我有一个休息端点来获取具有DateAttached
多对多表属性的用户角色。
var x = await _context.Users
.Include(role => role.UserRoles)
.Where(user => user.userRoles.Any(s => s.RoleId == id))
.ToListAsync();
我为这些类创建了一个地图:
CreateMap<Role, RolesOfUserViewModel>()
.AfterMap((source, destination) =>
{
foreach (var userRole in source.UserRoles)
destination.DateAttached = userRole.DateAttached;
});
但这设置了错误的值,因为一个用户可能有多个角色。我怎样才能做到这一点?
解决方案
推荐阅读
- python-3.x - Python - 从字符串中识别字符串和整数
- python - 如何实现熊猫数据框
- sql - 如果滞后中使用的列具有相同的值,则在使用滞后函数时分配相同的值
- c - 使用宏创建函数时处理左大括号的最佳方法
- r - 如何使用ggplot2在一个散点图的x轴上绘制多列?
- c# - Unity 2D 中不同对象的多个粒子系统
- javascript - 是否可以判断用户是否与伪元素交互?
- c++ - 在 macOS 上使用 clang++ 在 Visual Studio Code 中编译多个 .cpp 文件
- python - 对 Python 中的嵌套 for 循环感到困惑
- r - R将时间序列中的重复行与数据表中的不同列类型组合起来