我尝试在VS2008(c#)中编写的Visual Studio 2013(c#)中重新创建一个代码(我在视频中看到过): 我已经尝试了EF 6和EF 5版本选项相同的结果..搜索网络和MSDN没有运气。
这是我的代码,其中的评论显示了我得到的错误:
private CoffeeShopDBEntities cse = new CoffeeShopDBEntities();
private void AddProductsToTabbedPanel()
{
// using (CoffeeShopDBEntities context = new CoffeeShopDBEntities())
//--found this on msdn..got rid of old but end up w/2 new errors see below
{
//the foreach code below goes here
}
foreach(TabPage tp in tabControl1.TabPages)
{
ObjectQuery<tblProduct> filteredProduct = new ObjectQuery<tblProduct>
("SELECT VALUE P FROM tblProducts AS P", cse);
//when 'context' used 1)possible mistaken empty statment
//2)the name 'context' doesnt exist in the current context
//when 'cse'used :
//Error 1 The best overloaded method match for 'System.Data.Objects.ObjectQuery<P.tblProduct>.ObjectQuery(string, System.Data.Objects.ObjectContext)' has some invalid arguments
//Error 2 Argument 2: cannot convert from 'P.CoffeeShopDBEntities' to 'System.Data.Objects.ObjectContext'
foreach (tblProduct tprod in filteredProduct)
{
Button b = new Button();
b.Text = tprod.Description;
tp.Controls.Add(b);
}
}
}
我在Stack Overflow上发现了类似的问题,并且回复声明它是语法错误,但没有指出在哪里。
答案 0 :(得分:1)
您遇到错误,因为ObjectQuery正在寻找EF 4.0及更低版本附带的ObjectContext。 CoffeeShopDBEntities是DBContext类型,它带有EF 4.1及以上版本。
我建议您将查询更改为:
List<tblProduct> filteredProducts = cse.tblProducts.ToList();
如果您想了解有关ObjectContext与DBContext的更多信息,可以查看以下链接:
http://www.c-sharpcorner.com/UploadFile/ff2f08/objectcontext-vs-dbcontext/