gpt4 book ai didi

c# - AutoMapper:创建包含类的 map

转载 作者:行者123 更新时间:2023-11-30 17:46:37 25 4
gpt4 key购买 nike

我有这两个 View 模型:

public class SettingsViewModel
{
public string UserId { get; set; }
public PersonalViewModel Personal { get; set; }
}

public class PersonalViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

实现这些 View 模型后,我使用自动映射器创建了一个 map :

    Mapper.CreateMap<User, PersonalViewModel>()
.ForMember(vm => vm.Birthday, m => m.MapFrom(
u => (u.Birthday.HasValue) ? u.Birthday.Value.ToString("dd.MM.yyyy") : DateTime.Now.ToString("dd.MM.yyyy")));

Mapper.CreateMap<User, SettingsViewModel>()
.ForMember(vm => vm.UserId, m => m.MapFrom(
u => u.Id));

var viewModel = Mapper.Map<User, SettingsViewModel>(user);

现在我遇到了问题,我的 SettingsViewModel 中的属性 Personal 为空。如何合并我的两个映射?如何用我的用户对象中的数据填充我的 Personal 属性?在我的用户对象中,有 FirstNameLastName 的属性。

最佳答案

您可以这样设置映射:

Mapper.CreateMap<User, SettingsViewModel>()
.ForMember(vm => vm.UserId, m => m.MapFrom(u => u.Id))
.ForMember(vm => vm.Personal, opt => opt.MapFrom(u => u));

在这里,我们说User 对象本身映射 Personal 属性。当您指定它时,来自 的映射>UserPersonalViewModel 将自动使用。

示例: https://dotnetfiddle.net/YJnPDq

关于c# - AutoMapper:创建包含类的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com