我正在尝试使用VS2015 C#开发销售和库存系统。但是,今天我遇到了错误。这是我的代码:
public partial class Form4 : Form
{
private BindingList<tblProduct> products = new BindingList<tblProduct>();
private db_22VapeStreetEntities cse = new db_22VapeStreetEntities();
public Form4()
{
InitializeComponent();
lstProductsChosen.DataSource = products;
lstProductsChosen.DisplayMember = "Description";
createTabbedPanel();
}
private void AddProductsToTabbedPannel()
{
foreach (TabPage tp in tabControl1.TabPages)
{
ObjectQuery<tblProduct> filteredProduct = new ObjectQuery<tblProduct>("SELECT VALUE P FROM tblProducts AS P", cse);
}
错误是我在此处调用" cse" -> ObjectQuery<tblProduct>("SELECT VALUE P FROM tblProducts AS P", cse);
我得到
参数2:无法转换从'inctingsystem.db_22vapestreetentities'转换为'system.data.objects.objectContext'
我尝试搜索问题,但看不到任何解决方案。
从您发布的小代码中,您的实体上下文实际上是dbcontext。
如果是这种情况,请尝试此
foreach (TabPage tp in tabControl1.TabPages)
{
ObjectQuery<tblProduct> filteredProduct = new ObjectQuery<tblProduct>("SELECT VALUE P FROM tblProducts AS P", ((IObjectContextAdapter)cse).ObjectContext);
}
如果有帮助,尽管您应该使用DBContext使用条件过滤器进行参数化查询的新方法。我想现在您还有其他原因与ObjectContext模式保持。
如果您有DBContext,请尝试以下LINQ语句:
IQueryable<tblProduct> filteredProduct = cse.tblProducts.AsQueryable();
或省略您正在使用的实际过滤器语法,我们可以尝试这样的事情:
string filterValue = "value1";
IQueryable<tblProduct> filteredProduct = cse.tblProducts.Where(p => p.FilterColumn == filterValue);