【发布时间】:2019-08-02 19:48:57
【问题描述】:
我有一个product 表。我想从此表中获取特定列(仅名称和价格列),但出现错误。我做错了什么?
总结一下,我想写
SELECT name, surname
FROM Product
WHERE name='emre'
但在我的基于实体框架的代码中。
public class products
{
public int ID { get; set; }
public string name { get; set; }
public decimal price { get; set; }
public int stock { get; set; }
}
public class EtradeContext:DbContext
{
public DbSet<products> prdcts { get; set; }
}
我的 ProductDal.cs 如下:
public List<products> GetNameAndPrice()
{
using (EtradeContext context = new EtradeContext())
{
var result = (from x in context.prdcts
where x.name == "emre"
select new products
{
name = x.name,
price=x.price
}).ToList();
return result;
}
}
我收到了this error。
【问题讨论】:
-
错误是因为您试图将查询结果投影到您为 Dbcontext 定义为 Dbset 的同一实体,这意味着您不能使用实体来投影您用于 DbSet 的查询结果
-
所以你需要视图模型来收集查询结果。所以创建一个视图模型意味着新类名称为
productsViewModel并将所有属性从products复制到新的,然后将方法返回类型更改为List并将您的结果投影到新的 select new productsViewModel {} -
谢谢@er-sho。它的工作:)
-
@EnginOzsozgun,很高兴听到并欢迎 :)
标签: c# asp.net .net entity-framework linq