从"DataBaseEntities"到"System.Data.Objects.ObjectContext"的错误转换



我正在尝试使用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);

最新更新