我在阅读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的错误,代码末尾的用户代码未处理(tolist)
public IEnumerable<ProductDTO> GetProducts()
{
using (var db = new NORTHWNDEntities())
{
return db.Products.Select(m => new ProductDTO { Name = m.ProductName }).ToList();
}
}
答案 0 :(得分:4)
您正在向列表添加相同的引用。你可以像这样解决它:
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();
}
}