1

このエラーの意味と解決方法を知っている人はいますか? 私の研究はすべて空白を描いています.MSDNで設定する方法はわかりますが、問題が何であるかを説明する方法で説明していません. ビューバッグ項目を設定するために LINQ クエリの一部を削除すると、それは解決されるように見えますが、新しいものを設定してビューに渡し、MVCMailer のメールを生成した瞬間に戻ってきます。それがビューバッグの問題なのか、単にビューに渡すために生成するのにあまりにも多くのlinqクエリを呼び出しているのかはわかりません。

私は非常に立ち往生しています(再び)........

乾杯、スティーブ。

DbLimitExpression にはコレクション引数が必要です。パラメーター名: 引数 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentException: DbLimitExpression にはコレクション引数が必要です。パラメータ名: 引数

コードの例は次のとおりです。

            var VBSalutation = from A in context.Salutations
                where A.SalutationId == policytransaction.SalutationId
                select A.SalutationName;
        ViewBag.Salutation = VBSalutation.FirstOrDefault();

これは、さまざまなパラメーターに対して繰り返され、ビューに渡されます。

4

2 に答える 2

2

さて、私は同様の問題に直面し、それを解決しました。問題は WHERE 句にありました: 左側の等号演算子 (=) 記号のデータ型が右側のデータ型と一致しませんでした。あなたのシナリオでは:

where A.SalutationId == policytransaction.SalutationId

A の SalutationID は INT であり、policytransaction の SalutationId は文字列である可能性があります (これが私の場合でした)。

policytransaction.SalutationId を Int 変数に割り当てて使用することで解決しました。

int myIntVariable = Convert.ToInt16(policytransaction.SalutationId);
...//some code here
where A.SalutationId == myIntVariable;

また、Linq で変数を直接キャストすることはできないことに注意してください。そうしないと、「LINQ to Entities はメソッドを認識しません」というエラーが表示されます。一時変数を使用してから、where 句を適用する必要があります。

于 2012-06-09T05:05:09.203 に答える
0

試すViewBag.Salutation = VBSalutation.SingleOrDefault();

于 2012-02-28T11:32:35.947 に答える