2016-06-17 201 views
0

在我的c#wpf dekstop应用程序中使用automapper。如何将列表自动映射到另一个列表

我有这2种型号:

list<A> collectionA = DB.GetQueryResults(); 

我现在想这个集合“”转移到类:

public class A 
{ 
    public string Field1 {get; set;} 
    public string Field2 {get; set;} 
} 

public class B 
{ 
    public string Field1 {get; set;} 
    public string Field2 {get; set;} 
} 

我通过通过一个DB查询,以便填充创建一个类的集合B通过使用AutoMapper ..

var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<A, B>()); 
var mapperJobProfile = configJobProfile.CreateMapper(); 
collectionB = mapperJobProfile.Map<B>(collectionA); 

但我得到一个映射错误,这让我鼻子告诉我很多。所以我认为这种做法是错误的?

我该怎么做?

感谢

屏幕 - enter image description here弃用功能的镜头:

+0

什么是映射错误?查看内部异常。 –

回答

0
using System; 
using AutoMapper; 

public class Foo 
{ 
    public string A { get; set; } 
    public int B { get; set; } 
} 

public class Bar 
{ 
    public string A { get; set; } 
    public int B { get; set; } 
} 

public class Program 
{ 
    public static void Main()  
    { 
     Mapper.CreateMap<Foo,Bar>(); 

     var foo = new Foo { A="test", B=100500 }; 

     var bar = Mapper.Map<Bar>(foo); 

     Console.WriteLine("foo type is {0}", foo.GetType()); 
     Console.WriteLine("bar type is {0}", bar.GetType()); 

     Console.WriteLine("foo.A={0} foo.B={1}", foo.A, foo.B); 
     Console.WriteLine("bar.A={0} bar.B={1}", bar.A, bar.B); 
    } 
} 

这里是链接到Tutorial

关于@Romi Petrelis的depricated警告检查答案Automapper says Mapper.Map is obsolete, global mappings?

+0

谢谢,但这种方式已被弃用 –

+0

@AndrewSimpson哪里有关于这个弃用的信息? –

+0

嗨,如果我把该代码放入VS2015我会得到一个弃用的警告。我会立即上传屏幕截图。 –

1

你有建立一个从A - > B的映射,但是你要执行的映射是一个List - > Lis吨的Bs。

建立一个映射列表,并且应该做的伎俩,即

var configJobProfile = new MapperConfiguration(cfg => cfg.CreateMap<List<A>, List<B>>()); 
var mapperJobProfile = configJobProfile.CreateMapper(); 
List<B> collectionB = mapperJobProfile.Map<List<B>>(collectionA); 
+0

谢谢,我做过之前(我以为我有!),它产生了一个错误。这段时间没有错误,但没有记录,即使我知道有1条记录。将继续调查 - 谢谢 –

相关问题