0

ObjectQueryメソッドでエラーが発生しました。誰か助けてもらえますか?

private void AddProductsToTabbedPanel()
        {
            foreach (TabPage tp in tabControl1.TabPages )
            {
                ObjectQuery<TblProduct> filteredProduct = new ObjectQuery<TblProduct>("Select value p from TblProduct as P", csdbe);

                foreach (TblProduct tpro in filteredProduct)
                {
                    Button btn = new Button();
                    btn.Text = tpro.Description;
                    tp.Controls.Add(btn);
                }
            }
        }

ここでの私のロジックは、TblProduct の内容に基づいてコントロール タブにボタンを追加することです。

しかし、エラーが発生しました:

引数 2: 'Coffee_Shop.CoffeeShopDatabaseEntities' から 'System.Data.Entity.Core.Objects.ObjectContext' に変換できません

'System.Data.Entity.Core.Objects.ObjectQuery.ObjectQuery(string, System.Data.Entity.Core.Objects.ObjectContext)' に最も一致するオーバーロードされたメソッドには、いくつかの無効な引数があります

4

2 に答える 2

0

ここで真の問題を開始するには、SQL コードを実行する方法としてエンティティ フレームワークを使用します。これは、エンティティ フレームワークの目的ではありません。データベースにエンティティ フレームワークが接続されている場合は、これを実行してエンティティを取得します。

//assuming csdbe is your data context
var filteredProduct = csdbe.TblProduct;

上記の例では、クエリをフィルタリングしておらず、すべてを要求しているだけです。上記の例をフィルタリングするには、.Where を使用します。

var filteredProduct = csdbe.TblProduct.Where(x => x.SomeValue == "yourValue");

元の質問について:

引数 2: 'Coffee_Shop.CoffeeShopDatabaseEntities' から 'System.Data.Entity.Core.Objects.ObjectContext' に変換できません

「csdbe」が「C​​offeeShopDatabaseEntities」エンティティであるという例外が表示されます。必要な 2 番目のパラメーターは、データ コンテキストです。

var filteredProduct = new ObjectQuery<TblProduct>("SELECT VALUE P FROM TblProducts AS P", yourContext);
于 2015-08-17T11:22:08.560 に答える