Сущности к 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 до того, как фактически выполните запрос. Предполагая, что это работает, это выглядит хорошо для меня.