Проблемы с ObjectQuery<t> в Visual Studio 2013 .NET Framework 4

Я делаю POS для кафетерия в больнице, и я смотрю несколько видео в YouTube о том, как сделать POS в C#, но я попал в эту часть, где он использует ObjectQuery<T> класс, и когда я объявляю экземпляр объекта, он дает мне эту ошибку:

Ошибка 2 Аргумент 2: невозможно преобразовать из 'Cafeteria_POS_EF4.BVH_POS_DB_MODEL_EF43' в 'System.Data.Objects.ObjectContext' c:\users\tony's\ Documents\visual studio 2013\projects\cafeteria_pos_ef4\cafeteria_pos_ef4\cashregister.cs 46 119 Cafeister4

И этот:

Ошибка 1 Наилучшее совпадение перегруженного метода для 'System.Data.Objects.ObjectQuery.ObjectQuery(string, System.Data.Objects.ObjectContext)' имеет недопустимые аргументы c:\users\tony's\documents\visual studio 2013\projects\cafeteria_pos_ef4\cafeteria_pos_ef4\cashregister.cs 46 49 Кафетерий_POS_EF4

Я попытался найти в Интернете какое-то решение или что-то подобное, но я нахожу только старые учебники и не могу понять, что говорит Microsoft о том, как отправлять аргументы конструктора... Я использую.NET Framework 4 и Visual Studio 2013.

PS - хочу использовать ObjectQuery потому что я хочу сделать foreach цикл, чтобы заполнить TabControl Динамически из элементов в базе данных

 ObjectQuery<pos_item> filteredProduct = new ObjectQuery<pos_item>("SELECT VALUE P FROM pos_item AS P WHERE P.pos_item_group = " + i.ToString(), cse);

Если вы, ребята, хотите увидеть весь класс, опубликуйте его здесь ниже, заранее спасибо за ваше время и усилия

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Objects;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cafeteria_POS_EF4
{
    public partial class CashRegister : Form
    {

    private BindingList<pos_item> products = new BindingList<pos_item>();

    private BVH_POS_DB_MODEL_EF43 cse = new BVH_POS_DB_MODEL_EF43();

    public CashRegister()
    {
        InitializeComponent();
        lboxBasket.DataSource = products;
        lboxBasket.DisplayMember = "description";
        //pos_item p = new pos_item() { };
        CreateTabbedPanel();

        FillTabbedPanel();
    }




    private void CreateTabbedPanel()
    {

        foreach(pos_item_group ig in cse.pos_item_group)
        {
            tabControl.TabPages.Add(ig.item_group_id.ToString(), ig.item_group_name);
        }

    }

    private void FillTabbedPanel()
    {

        int i = 1;

        foreach(TabPage tp in tabControl.TabPages)
        {
            ObjectQuery<pos_item> filteredProduct = new ObjectQuery<pos_item>("SELECT VALUE P FROM pos_item AS P WHERE P.pos_item_group = " + i.ToString(), cse);


            FlowLayoutPanel flp = new FlowLayoutPanel();

            flp.Dock = DockStyle.Fill;

            foreach (pos_item item in filteredProduct)
            {
                Button b = new Button();
                b.Text = item.description;
                tp.Controls.Add(b);
            }

        tp.Controls.Add(flp);
        i++;

        }

    }

}

}

1 ответ

Я нашел этот ответ здесь на форуме, который решил мою проблему.

Наилучшее совпадение перегруженного метода для XXX имеет недопустимые аргументы

Тем не менее, код не будет выполняться, потому что в foreach петля.

Типы аргументов "POS_DB_MODEL.pos_item_group" и "Edm.Int32" несовместимы для этой операции. Предикат возле WHERE, строка 1, столбец 58.

Другие вопросы по тегам