c# - 如何从列表中选择并使用 Automapper 映射另一个对象
问题描述
从嵌套的实体列表中,我们想要选择一个对象并将其映射到 Dto 对象中,但是当我们使用 Automapper 过滤 deleteDate 相等的对象null
并映射它时,对于每一列 Automapper 再次在 db 上过滤。如何过滤一次并将选择的映射到 Dto 对象
我们需要将所有信息存储在我们的数据库中,因此请使用具有默认值的 DeleteDate 列null
。所以我们使用一对多的关系来存储我们数据的历史。
public class User
{
public Guid UserId { get; set; }
public string MobileNumber { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public IList<CustomerDetail> CustomerDetails { get; set; }
}
public class CustomerDetail
{
public Guid CustomerDetailId { get; set; }
public float MaximumAmountPerTransaction { get; set; }
public float MaximumAmountPerDay { get; set; }
public bool IsConfirm { get; set; }
public Guid UserId { get; set; }
public virtual DateTimeOffset CreateDate { get; set; }
public virtual DateTimeOffset? DeleteDate { get; set; }
}
public class CustomerResponse
{
[Key]
public Guid CustomerId{ get; set; }
public string MobileNumber{ get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsConfirm { get; set; }
public float? MaximumAmountPerTransaction { get; set; }
public float? MaximumAmountPerDay { get; set; }
}
public class CustomerDomainProfile : Profile
{
public UserDomainProfile()
{
CreateMap<User, CustomerResponse>()
.ForMember(dest => dest.CustomerId,
opt => opt.MapFrom(src => src.UserId))
.ForMember(dest => dest.Country,
opt => opt.MapFrom(src => src.Country.CommonName))
.ForMember(dest => dest.IsConfirm,
opt => opt.MapFrom(src => src.CustomerDetails.FirstOrDefault(cd => cd.DeleteDate == null).IsConfirm))
.ForMember(dest => dest.MaximumAmountPerTransaction,
opt => opt.MapFrom(src => src.CustomerDetails.FirstOrDefault(cd => cd.DeleteDate == null).MaximumAmountPerTransaction))
.ForMember(dest => dest.MaximumAmountPerDay,
opt => opt.MapFrom(src => src.CustomerDetails.FirstOrDefault(cd => cd.DeleteDate == null).MaximumAmountPerDay))
}
}
我希望对数据库进行查询并选择带有 DeleteDate 的 CustomerDetails 为 null 并将其映射,但是我们定义的类型,对于尝试查询数据库的每一列,因为
我希望查询数据库并使用 DeleteDate 选择 CustomerDetailsnull
和它的映射,但是我们的定义,对于每一列,都试图查询数据库,因为它无法识别它们来自同一个表。我们如何识别从一行中掉下来的它们以减少查询?还有其他解决方案或想法吗?
解决方案
推荐阅读
- mysql - 如何在sql中获取列的长度属性?
- php - 如何通过 PHP 在带有肥皂标签的 xml 字符串中添加一个孩子
- ajax - Django csrf_token 以一种形式工作,但不能以其他形式工作
- python - For Loop 将数据框列转换为单独的列表
- ionic-framework - Ionic 4 App - 在本地工作,但在谷歌播放(商店)中不起作用
- google-visualization - Google Sankey Diagram - 突出显示特定节点的整个流程
- autodesk-forge - 如何将版本与本地文件进行比较?
- opencv - 开始红绿灯识别
- java - 使用数学课将 double 舍入为 int
- python - 重新映射快捷方式我的组合 pyautogui 和 pynput