C# 在实体框架中使用字段子集时出错
我第一次在WebAPI服务中使用EF4。我了解EF的基本知识,但当我习惯于使用ADO时,这仍然是一个学习过程 我只想返回表中100多个字段的子集(5) 模型(生成的EF): 在我的控制器中获取方法:C# 在实体框架中使用字段子集时出错,c#,linq,entity-framework,C#,Linq,Entity Framework,我第一次在WebAPI服务中使用EF4。我了解EF的基本知识,但当我习惯于使用ADO时,这仍然是一个学习过程 我只想返回表中100多个字段的子集(5) 模型(生成的EF): 在我的控制器中获取方法: // GET api/Products public IQueryable<ITEM_MASTER> GetProduct() { // return db.ITEM_MASTER; return db.ITEM_MASTER.Select(x => new Pr
// GET api/Products
public IQueryable<ITEM_MASTER> GetProduct()
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
ProductList类充当占位符对象,就像使用.Select返回一个不是原始对象类型的DBQuery一样。我读到这是处理这种情况的理想方法。当它工作时,我会向它添加更多属性。我有一个下载的示例,其结构与此相同,并且可以正常工作
这是做我需要的事情的最好方法,只返回EF字段的子集吗?如何解决转换错误?错误很明显,您的方法应该返回
IQueryable
,但您正在尝试返回“System.Linq.IQueryable”
由于您将查询结果投影到“System.Linq.IQueryable”
,因此需要将其作为返回类型
// GET api/Products
public IQueryable<ProductList> GetProduct() //Change return type
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
//获取api/产品
public IQueryable GetProduct()//更改返回类型
{
//返回db.ITEM_MASTER;
返回db.ITEM\u MASTER.Select(x=>newproductlist{ItemCode=x.IM\u ITEM\u CODE});
}
由于您只选择了原始实体的一个子集,因此无法投影到实体框架中映射到表的实体,这就是为什么您需要一个PlaceHolder类
ProductList
错误很明显,假设您的方法返回IQueryable
,但您正在尝试返回“System.Linq.IQueryable”
由于您将查询结果投影到“System.Linq.IQueryable”
,因此需要将其作为返回类型
// GET api/Products
public IQueryable<ProductList> GetProduct() //Change return type
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
//获取api/产品
public IQueryable GetProduct()//更改返回类型
{
//返回db.ITEM_MASTER;
返回db.ITEM\u MASTER.Select(x=>newproductlist{ItemCode=x.IM\u ITEM\u CODE});
}
由于您只选择了原始实体的一个子集,因此无法投影到实体框架中映射到表的实体,这就是为什么您需要一个PlaceHolder类
ProductList
错误很明显,假设您的方法返回IQueryable
,但您正在尝试返回“System.Linq.IQueryable”
由于您将查询结果投影到“System.Linq.IQueryable”
,因此需要将其作为返回类型
// GET api/Products
public IQueryable<ProductList> GetProduct() //Change return type
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
//获取api/产品
public IQueryable GetProduct()//更改返回类型
{
//返回db.ITEM_MASTER;
返回db.ITEM\u MASTER.Select(x=>newproductlist{ItemCode=x.IM\u ITEM\u CODE});
}
由于您只选择了原始实体的一个子集,因此无法投影到实体框架中映射到表的实体,这就是为什么您需要一个PlaceHolder类
ProductList
错误很明显,假设您的方法返回IQueryable
,但您正在尝试返回“System.Linq.IQueryable”
由于您将查询结果投影到“System.Linq.IQueryable”
,因此需要将其作为返回类型
// GET api/Products
public IQueryable<ProductList> GetProduct() //Change return type
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
//获取api/产品
public IQueryable GetProduct()//更改返回类型
{
//返回db.ITEM_MASTER;
返回db.ITEM\u MASTER.Select(x=>newproductlist{ItemCode=x.IM\u ITEM\u CODE});
}
由于您只选择原始实体的一个子集,因此无法投影到实体框架中映射到表的实体,这就是为什么您需要一个PlaceHolder类
ProductList
您一定是在开玩笑吧。我比那更好!!有时你会迷失在细节中,我专注于LINQ部分,甚至没有想到方法本身。非常感谢你,你一定是在开玩笑。我比那更好!!有时你会迷失在细节中,我专注于LINQ部分,甚至没有想到方法本身。非常感谢你,你一定是在开玩笑。我比那更好!!有时你会迷失在细节中,我专注于LINQ部分,甚至没有想到方法本身。非常感谢你,你一定是在开玩笑。我比那更好!!有时你会迷失在细节中,我专注于LINQ部分,甚至没有想到方法本身。非常感谢你。