请检查我的代码。对于我的每个实体,我创建了一个服务类,我将此entity.This方法的所有访问方法放在其中,执行从实体到我的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;
}发布于 2009-10-10 17:27:35
一切都很好,但我有一个建议。如果你有很多DTO对象,你应该考虑写一个通用的转换器。它可以使用反射和explicit conversion运算符来完成。
发布于 2009-10-10 17:20:25
请记住,在您实际使用要返回的IEnumerable之前,查询不会真正命中数据库(因为延迟执行)。我不确定这是如何工作的,因为您是在实际执行查询之前处理FinanceEntities。假设它可以工作,对我来说看起来很好。
https://stackoverflow.com/questions/1548506
复制相似问题