gpt4 book ai didi

c# - AutoMapper 将 ViewModel 中的 int[] 或 List 映射到域模型中的 List

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:14 26 4
gpt4 key购买 nike

我是 AutoMapper 的新手,我一直在阅读和阅读这里的问题,但我不太能弄清楚什么看起来像一个非常微不足道的问题。

首先是我的类(class),然后是问题:

网关模型.cs

public class Gateway
{
public int GatewayID { get; set; }
public List<Category> Categories { get; set; }
public ContentType ContentType { get; set; }

// ...
}

public class Category
{
public int ID { get; set; }
public int Name { get; set; }

public Category() { }
public Category( int id ) { ID = id; }
public Category( int id, string name ) { ID = id; Name = name; }
}

public class ContentType
{
public int ID { get; set; }
public int Name { get; set; }

public ContentType() { }
public ContentType( int id ) { ID = id; }
public ContentType( int id, string name ) { ID = id; Name = name; }
}

GatewayViewModel.cs

public class GatewayViewModel
{
public int GatewayID { get; set; }
public int ContentTypeID { get; set; }
public int[] CategoryID { get; set; }
// or public List<int> CategoryID { get; set; }
// ...
}

根据我整天阅读的内容,这就是我到目前为止所了解的内容。我不知道如何将 int[](或 List,如果需要的话)从 ViewModel 映射到模型中的 List。

全局.asax.cs

Mapper.CreateMap<Gateway, GatewayViewModel>();
Mapper.CreateMap<GatewayViewModel, Gateway>()
.ForMember( dest => dest.ContentType, opt => opt.MapFrom( src => new ContentType( src.ContentTypeID ) ) )
.ForMember( /* NO IDEA ;) */ );

基本上,我需要将 ViewModel 中的所有 int[] CategoryID 项目映射到模型中 List Categories 类型的 ID 属性。对于反向映射,我需要将所有 ID 从 Category 类型映射到我的 int[](或列表)CategoryID,但我想我已经弄清楚了(还没有弄清楚)。如果我需要为反向映射做类似的事情,请告诉我。

仅供引用,我的 ViewModel 中的 int[] CategoryID 绑定(bind)到 View 中的 SelectList。

我希望 AutoMapper 的 CodePlex 项目站点有更完整的文档,但我很高兴他们至少有他们所拥有的。

谢谢!

最佳答案

您可以执行以下操作:

Mapper
.CreateMap<int, Category>()
.ForMember(
dest => dest.ID,
opt => opt.MapFrom(src => src)
);

Mapper
.CreateMap<GatewayViewModel, Gateway>()
.ForMember(
dest => dest.Categories,
opt => opt.MapFrom(src => src.CategoryID)
);

var source = new GatewayViewModel
{
CategoryID = new[] { 1, 2, 3 }
};

Gateway dst = Mapper.Map<GatewayViewModel, Gateway>(source);

显然,您无法将 Name 属性从 View 模型映射到模型,因为它不存在。

关于c# - AutoMapper 将 ViewModel 中的 int[] 或 List<int> 映射到域模型中的 List<Type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6368577/

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