0

我的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(string, System.Data.Entity.Core.Objects.ObjectContext)' 的最佳重载方法匹配有一些无效参数

4

2 回答 2

0

在这里开始真正的问题是使用实体框架作为运行 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”

它出现在您得到“csdbe”是“CoffeeShopDatabaseEntities”实体的异常中。所需的第二个参数是数据上下文。

var filteredProduct = new ObjectQuery<TblProduct>("SELECT VALUE P FROM TblProducts AS P", yourContext);
于 2015-08-17T11:22:08.560 回答
0

---你的代码应该是这样的

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);
    }
}
于 2017-03-22T05:14:39.343 回答