Сущности к DTO - Структура сущностей

Пожалуйста, ознакомьтесь с моим кодом. Для каждого моего объекта я создал класс обслуживания, в который я поместил все методы доступа для этого объекта. Этот метод выполняет преобразование из объектов в мои классы 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 ответа

Решение

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

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

Другие вопросы по тегам