0

请查看我的代码。对于我创建的每个实体,我都创建了一个服务类,我在其中放置了该实体的所有访问方法。此方法正在执行从实体到我的 DTO 类的转换。从 Web 层或业务方法调用此方法。我这样做对吗?还是我应该做不同的事情?

服务方式:

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;
    }
4

2 回答 2

0

请记住,在您实际使用要返回的 IEnumerable 之前,查询实际上不会命中数据库(因为延迟执行)。我不确定这将如何工作,因为您在实际执行查询之前处置了 FinanceEntities。假设这有效,对我来说它看起来不错。

于 2009-10-10T17:20:25.237 回答
0

一切都很好,但我有一个建议。如果你有很多 DTO 对象,你应该考虑编写一个通用转换器。它可以使用反射和显式转换运算符来完成。

于 2009-10-10T17:27:35.113 回答