如何在C#中填写DTO

我在阅读DTO列表时遇到麻烦.

我希望从数据库接收DTO列表,因此可以将它们放在WPF部分的表中,但是当我运行程序时,列表中没有数据,也没有错误.我不明白为什么,我的代码有问题吗?

   public IList<ProductDTO> GetProducts()
{
       IList<ProductDTO>listofproducts = new List<ProductDTO>();
       ProductDTO productDto = new ProductDTO();


    using (var db = new NORTHWNDEntities())
    {
        var query = from p in db.Products

                    select new
                    {
                        Name = p.ProductName,     
                    };

        foreach (var product in query)
        {
            productDto.Name = product.Name;
            listofproducts.Add(productDto);
        }

        return listofproducts;
    }     
}

更新后的版本:

我在代码末尾收到一个错误消息,称为entityexception未由用户代码处理(列表)

 public IEnumerable<ProductDTO> GetProducts()
        {
            using (var db = new NORTHWNDEntities())
            {
                return db.Products.Select(m => new ProductDTO { Name = m.ProductName }).ToList();
            }
        }

解决方法:

您将相同的引用添加到列表.您可以这样解决:

public IList<ProductDTO> GetProducts()
{
    IList<ProductDTO>listofproducts = new List<ProductDTO>();
    using (var db = new NORTHWNDEntities())
    {
        var query = from p in db.Products
                    select new
                    {
                        Name = p.ProductName,     
                    };
        foreach (var product in query)
        {
            listofproducts.Add(new ProductDTO {Name = product.Name});
        }
        return listofproducts;
    }     
}

要么

    public IList<ProductDTO> GetProducts()
    {
        using (var db = new NORTHWNDEntities())
        {
            return db.Products.Select(m=>new ProductDTO{Name = m.ProductName}).ToList();
        }     
    }
上一篇:NetCore+AutoMapper多个对象映射到一个Dto对象


下一篇:【转】C#中的Explicit和Implicit