2014-12-02 55 views
0

通用對象我有一個問題,以通用對象複製到通用對象通用對象與Automapper

public class Customer 
{ 
    public int CustomerId { get; set; } 
    public virtual ICollection<Quote> Quotes { get; set; } 
} 

我用這個通用類,複製對象對象:

public static class GenericAutomapper 
{ 
    public static void PropertyMap<T, U>(T source, U destination) 
     where T : class, new() 
     where U : class, new() 
    { 
     Mapper.CreateMap(typeof(T), typeof(U)); 
     Mapper.Map<T, U>(source); //crash here 
    } 
} 

當我得到一個客戶(使用EF 6.1.2)並且使用這個方法,我在「crash here」這一行發生錯誤。行情收集的樣子: 「((System.Data.Entity.DynamicProxies.Customer_AC635AD71AC95634EF9694FDC434135B488FD116F3C2B6A287846A7886521F3F)源).Quotes」

我沒有任何問題,當我有這樣的:.Include(x => x.Quotes)我的查詢中,正常的集合被加載。

有沒有辦法管理「未加載」集合?

感謝,

回答

0

您需要可以關閉延遲加載或執行映射之前的查詢;對.Include()的調用對此有幫助,或者在應用映射之前需要.ToList()(或類似的東西)。

+0

這個班級必須保持通用,當然沒有關於班級的具體內容。 – 2014-12-02 08:29:02

+0

映射類將保持特定的,但問題是,你試圖映射動態代理類,這不是一個好主意。你需要執行這個查詢(它不會是通用的,因爲我期望你將在特定的DBSet上工作),然後調用AutoMapper映射函數。這會給你具體的類型,並允許地圖起作用。這是提供有限信息的最佳猜測。 – WestDiscGolf 2014-12-02 08:47:13