请查看我的代码。对于我的每个实体,我都创建了一个服务类,其中我为这个实体放置了所有的访问方法。这个方法正在从实体转换到我的DTO类。从Web层或bussines方法调用此方法。我这样做吧?或者我应该采用不同的方式吗?
服务方法:
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;
}
答案 0 :(得分:0)
请记住,在您实际使用正在返回的IEnumerable(因为延迟执行)之前,查询实际上不会访问数据库。我不确定这是如何工作的,因为在实际执行查询之前处理FinanceEntities。假设有效,那对我来说很好。
答案 1 :(得分:0)
一切都很好,但我有一个建议。如果你有很多DTO对象,你应该考虑编写一般的转换器。可以使用反射和explicit conversion运算符来完成。