DTO实体 - 实体框架

时间:2009-10-10 17:14:09

标签: c# .net html-lists

请查看我的代码。对于我的每个实体,我都创建了一个服务类,其中我为这个实体放置了所有的访问方法。这个方法正在从实体转换到我的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;
    }

2 个答案:

答案 0 :(得分:0)

请记住,在您实际使用正在返回的IEnumerable(因为延迟执行)之前,查询实际上不会访问数据库。我不确定这是如何工作的,因为在实际执行查询之前处理FinanceEntities。假设有效,那对我来说很好。

答案 1 :(得分:0)

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

相关问题