2014-12-02 7 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) и используйте этот метод, я получаю ошибку в строке «Сбой здесь». Коллекция Котировки выглядеть: «((System.Data.Entity.DynamicProxies.Customer_AC635AD71AC95634EF9694FDC434135B488FD116F3C2B6A287846A7886521F3F) источник) .Quotes»

У меня нет никакой проблемы, когда я включаю это: .Include(x => x.Quotes) в моем запросе, нормальный сбор загружен.

Есть ли способ управлять «не загруженной» коллекцией?

Спасибо,

ответ

0

Вам нужно либо отключить отложенную загрузку или выполнить запрос перед отображением; вызов для .Include() помогает с этим или вам нужно использовать .ToList() (или что-то подобное) перед применением сопоставления.

+0

Этот класс должен оставаться общим и, конечно же, ничего конкретного о классе. –

+0

Класс отображения останется конкретным, но проблема в том, что вы пытаетесь сопоставить динамический класс прокси, что не очень хорошо. Вам нужно выполнить запрос (который не будет иметь ничего общего, поскольку я ожидаю, что вы будете работать с определенным DBSet <> s), а затем вызовите функцию сопоставления AutoMapper. Это даст вам конкретные типы и должно позволить карте функционировать. Это лучше всего догадывается с предоставленной ограниченной информацией. – WestDiscGolf

Смежные вопросы