Проблемы с 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.