Сущности к DTO - Структура сущностей - PullRequest
0 голосов
/ 10 октября 2009

Пожалуйста, просмотрите мой код. Для каждой моей сущности я создал класс обслуживания, куда я поместил все методы доступа для этой сущности. Этот метод выполняет преобразование сущностей в мои классы DTO. Эти методы вызываются из веб-слоя или бизнес-метода. Я делаю это правильно? Или я должен сделать это по-другому?

Способ обслуживания:

public static IEnumerable<OsobaDto> GetNakupyByOsoba(Guid guid)
    {
        using (FinanceEntities finance = new FinanceEntities())
        {

            var osoby = from o in finance.OsobaSet
                        where o.Nakupy.Any(n => n.idnakupu == guid)
                        select new OsobaDto
                                   {
                                       Id = o.idosoba,
                                       Meno = o.meno,
                                       Priezvisko = o.priezvisko,
                                       Prijem = o.prijem,
                                       Nakupy = o.Nakupy.Select(n => new NakupDto
                                                                         {
                                                                             IdNakupu = n.idnakupu,
                                                                             Cena = n.cena,
                                                                             Datum = n.datum
                                                                         })
                                   };



            return osoby;
        }
    }

И класс DTO

  public class NakupDto
{
    public Guid? IdNakupu
    {
        get; 
        set;
    }
    public Decimal Cena
    {
        get;
        set;
    }
    public DateTime Datum
    {
        get;
        set;
    }

    public IEnumerable<OsobaDto> Osoby
    {
        get;
        set;
    }

    public OsobaDto Platil
    {
        get;
        set;
    }

Ответы [ 2 ]

0 голосов
/ 10 октября 2009

Все хорошо, но у меня есть одно предложение. Если у вас много объектов DTO, вы должны подумать о написании общего конвертера. Это можно сделать с помощью отражения и явного преобразования операторов.

0 голосов
/ 10 октября 2009

Имейте в виду, что запрос на самом деле не попадет в базу данных, пока вы на самом деле не используете IEnumerable, который вы возвращаете (из-за отложенного выполнения). Я не уверен, как это будет работать, поскольку вы избавляетесь от FinanceEntities перед тем, как фактически выполнить запрос. Предполагая, что это работает, это выглядит хорошо для меня.

...