2016-06-17 178 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條記錄。將繼續調查 - 謝謝 –

相關問題