2012-02-26 7 views
1

このエラーが何を意味するのか、それを解決する方法を知っている人がいますか?すべての私の研究は空白を描いています。私はMSDNでそれを設定する方法を見ることができますが、問題が何であるかを私に説明する方法で説明しません。私がLINQクエリのいくつかを削除してビューバッグの項目を設定すると、それは解決するように見えますが、新しいものを設定してMVCMailerのメールを生成するためにビューに渡すと、戻ってきます。 viewbagの問題か、あまりにも多くのlinqクエリを呼び出して、それらを生成してビューに渡すかどうかはわかりません。DbLimitExpressionにはコレクション引数が必要です

私は..........(再び)

乾杯、 スティーブ非常にこだわっています。

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

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

コードの例である:

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

これは、様々なパラメータについて反復し、次にビューに渡されます。

+0

どのDBエンジンですか? –

+0

Sql Server Compact 4.これがDBEngineに関連していると思う場合、私はAzure DBをセットアップして、それを繰り返すことができるかどうか確認できますか?私はそれがコードに関連していると思ったので、これを試みなかった。 –

+0

これは、ある時点でいくつかのドライバの問題があったため、MySQL関連の問題ではないことを確認したいことがありました。このコードは最初かedmxですか? –

答えて

2

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

where A.SalutationId == policytransaction.SalutationId

AのSalutationIDは(これは、それが私の場合にあった方法です)の文字列であるかもしれないpolicytransactionのINTとSalutationIdかもしれません。

私がint変数にpolicytransaction.SalutationIdを割り当て、それを使用して、それを解決:

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

また、あなたが直接、他のLINQに直接変数をキャストすることはできませんのでご注意ください、あなたがエラーを取得します「LINQをしますエンティティはメソッドを認識しません "。一時変数を使用してwhere句を適用する必要があります。

+0

ありがとうDonNetFreak、私はそれが簡単にこれをテストすることはできませんでしたデータベースへの呼び出しの数だと思ったので、私はそれを記録し終わった。それは賢明と思うし、私はこのオンラインで何も見つけられなかった他の人を助けるでしょう。ソリューションとしてマークされています。 –

0

ViewBag.Salutation = VBSalutation.SingleOrDefault();

関連する問題