实体框架中的对象查询
本文关键字:对象 查询 框架 实体 | 更新日期: 2023-09-27 18:08:10
我得到一个错误与ObjectQuery
方法,有人可以帮助吗?
private void AddProductsToTabbedPanel()
{
foreach (TabPage tp in tabControl1.TabPages )
{
ObjectQuery<TblProduct> filteredProduct = new ObjectQuery<TblProduct>("Select value p from TblProduct as P", csdbe);
foreach (TblProduct tpro in filteredProduct)
{
Button btn = new Button();
btn.Text = tpro.Description;
tp.Controls.Add(btn);
}
}
}
我的逻辑是,它在控制选项卡中添加按钮是基于什么是TblProduct
的内容但是我得到了一个错误:
参数2:不能从"Coffee_Shop。CoffeeShopDatabaseEntities"System.Data.Entity.Core.Objects.ObjectContext"
最佳重载方法匹配"System.Data.Entity.Core.Objects.ObjectQuery.ObjectQuery(字符串,System.Data.Entity.Core.Objects.ObjectContext)'有一些无效的参数
开始这里真正的问题是使用实体框架作为一种方式来运行你的sql代码,这不是什么实体框架。如果您有实体框架附加到您的数据库,只需这样做,以获得您的实体:
//assuming csdbe is your data context
var filteredProduct = csdbe.TblProduct;
在上面的例子中,你没有过滤你的查询,只是要求所有的查询。要过滤上面的示例,请使用。where
var filteredProduct = csdbe.TblProduct.Where(x => x.SomeValue == "yourValue");
现在回答你最初的问题:
参数2:不能从'Coffee_Shop '转换。CoffeeShopDatabaseEntities'到'System.Data.Entity.Core.Objects.ObjectContext'
它似乎是由例外,你得到的" csbe "是一个"CoffeeShopDatabaseEntities"实体。所需的第二个参数是数据上下文。
var filteredProduct = new ObjectQuery<TblProduct>("SELECT VALUE P FROM TblProducts AS P", yourContext);
——你的代码应该是这样的
string queryString = @"SELECT VALUE P FROM Tblproducts as P";
foreach (tblproducttype pt in cse.tblproducttypes)
{
ObjectContext context =((IObjectContextAdapter) cse).ObjectContext;
ObjectQuery<tblproduct> filteredproduct = new ObjectQuery<tblproduct>(queryString, context);
foreach (tblproduct tprod in filteredproduct)
{
Button b = new Button();
b.Text = tprod.description;
tp.Controls.Add(b);
}
}