2

こんにちは、entityframework 内にこのようなコードがあります (同時に多くの項目を変更したいのですが、このようなループを使用できるかどうかはわかりませんが、次のような例外がスローされます:

LINQ to Entities はメソッド 'Int32 get_Item(Int32)' メソッドを認識せず、このメソッドはストア式に変換できません。

コード:

        try
        {
            for (int j = 0; j < ids.Count; j++)
            {
                using (OzgorenEntities2 context = new OzgorenEntities2())
                {
                        Stock st = context.Stocks.First(i => i.id == ids[j]);
                        st.stockAmount =  amounts[j];
                        context.SaveChanges();
                }
            }
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }

正直なところ、検索したところ、サーバー側で変換が機能していないことがわかりましたが、そこで変換していません。

ありがとう

4

2 に答える 2

5

指定されたインデックスで ids 値の変数を導入してみてください

            using (OzgorenEntities2 context = new OzgorenEntities2())
            {
                    var id = ids[j];
                    Stock st = context.Stocks.First(i => i.id == id);
                    st.stockAmount =  amounts[j];
                    context.SaveChanges();
            }
于 2013-05-08T15:37:37.970 に答える
2

ストレージ値に中間変数を追加する必要がありますids[j]

    try
    {
        for (int j = 0; j < ids.Count; j++)
        {
            var tempId = ids[j];
            using (OzgorenEntities2 context = new OzgorenEntities2())
            {
                    Stock st = context.Stocks.First(i => i.id == tempId);
                    st.stockAmount =  amounts[j];
                    context.SaveChanges();
            }
        }
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }

これは、IQueriable 式の性質によるものです。i => i.id == ids[j]LINQ to Entities は、式を SQL ステートメントに転送する方法を知りません。

于 2013-05-08T15:38:48.150 に答える