我有一个从客户端收到的视图模型,看起来像这样
public class OrderViewModel
{
public string Name{get;set;}
public string ContactDetails {get;set;}
public List<FunkyThing_ViewModel> {get;set;}
}
public class FunkyThing_ViewModel
{
public string ThingName{get;set;}
public string Colour{get;set;}
public string Size{get;set;}
}
我希望将其映射到域模型列表,每个域模型看起来都更像这样:
public class Order
{
public string Name{get;set;}
public string ContactDetails {get;set;}
public string ThingName{get;set;}
public string Colour{get;set;}
public string Size{get;set;}
}
所以我想要做的事情最终看起来像这样:
List<Order> orders = new Orders();
Mapper.CreateMap<OrderViewModel, List<Order>>();
//Something in here to ensure each funky thing creates an additional order....
Mapper.Map(viewModel, orders);
参考方案
using System.Collections.Generic;
using System.Linq;
using AutoMapper;
using NUnit.Framework;
using SharpTestsEx;
namespace StackOverflowExample.Automapper
{
public class OrderViewModel
{
public string Name { get; set; }
public string ContactDetails { get; set; }
public List<FunkyThingViewModel> FunkyThingViewModels { get; set; }
}
public class FunkyThingViewModel
{
public string ThingName { get; set; }
public string Colour { get; set; }
public string Size { get; set; }
}
public class Order
{
public string Name { get; set; }
public string ContactDetails { get; set; }
public string ThingName { get; set; }
public string Colour { get; set; }
public string Size { get; set; }
}
[TestFixture]
public class FlattenWithListTests
{
[Test]
public void FlattenListTest()
{
//arrange
var source = new OrderViewModel
{
Name = "name",
ContactDetails = "contact",
FunkyThingViewModels = new List<FunkyThingViewModel>
{
new FunkyThingViewModel {Colour = "red"},
new FunkyThingViewModel {Colour = "blue"}
}
};
Mapper.CreateMap<FunkyThingViewModel, Order>();
Mapper.CreateMap<OrderViewModel, Order>();
Mapper.CreateMap<OrderViewModel, List<Order>>()
.ConvertUsing(om => om.FunkyThingViewModels.Select(
ftvm =>
{
var order = Mapper.Map<Order>(om);
Mapper.Map(ftvm, order);
return order;
}).ToList());
//act
var mapped = Mapper.Map<List<Order>>(source);
//assert
mapped[0].Satisfy(m =>
m.Name == source.Name &&
m.ContactDetails == source.ContactDetails &&
m.Colour == "red");
mapped[1].Satisfy(m =>
m.Name == source.Name &&
m.ContactDetails == source.ContactDetails &&
m.Colour == "blue");
}
}
}
使用AutoMapper将简单DTP转换为复杂DTO - c#我有一个简单的DTO看起来像这样: public partial class Company { public string NAME { get; set; } public string CONTACT_ADDR1_1 { get; set; } public string CONTACT_ADDR2_1 { get; set; } public str…
从列表中获取价值(C#UWP) - c#我有课 public class RootObject { public int id { get; set; } public int parent_id { get; set; } public string status { get; set; } public string order_key { get; set; } public string …
在不同的类之间共享哈希图和其他一些数据结构 - java在Web应用程序中,我想执行一些属于不同类的方法。方法调用将成链进行(第一个方法调用第二个,第二个调用第三个...依此类推)。每种方法都会在某些哈希图或其他数据结构中进行某些输入或更新。执行完所有方法后,我必须在数据库中进行一些更新。基于存储在哈希图中的值。根据我的理解,我可以通过以下选择来实现这一目标:继续将哈希图从一种方法传递到另一种方法。我认为这是一个…
对象比较是否相等:JAVA - javapublic ClassA { private String firstId; private String secondId; public void setFirstId(String firstId) { this.firstId = firstId; } public String getFirstId() { return id; } public…
如何在属性中搜索特定值? - c#我有以下实体框架模型:public class Person { public int Id { get; set; } public string Name { get; set; } public List<Email> EmailAddresses { get; set; } } public class Email { public in…