2011-05-27 21 views
2

を返します。は、私は正常にこのように私のコントローラからモデルを返すことができEFモデルクラス

ここでは、Messages.user == Membership.GetUser()。ToString()のメッセージのみを表示します。

しかし、私はこれを行うとき:

return View(lemonadedb.Messages.Where(p => p.user == Membership.GetUser().ToString()).ToList()); 

を私が手:

可能System.StringのToString() ' 方法、およびこの方法「エンティティへのLINQは 方法を認識しません' をストア式に変換することはできません。 '

メッセージテーブルの結果を絞り込むには何らかの方法が必要です。

何とかfind()メソッドを使用する必要がありますか?私はそれがIDのためだと思った。

私はこれをどのようにしたらよいでしょうか?

+0

シュート...私は、複数のモデルを返却して処理することは容易ではないことに気付きました。私はViewDataメカニズムを使うべきだと思います。 – micahhoover

答えて

3

この問題が発生した理由は、Entity Frameworkが式Membership.GetUser().ToString()をSQLクエリとして評価しようとしているためです。この式の値を格納し、それをクエリに渡すには、新しい変数を作成する必要があります。 Entity Frameworkは、これを期待どおりに解釈します。

次のように動作するはずです:

var user = Membership.GetUser().ToString(); 
return View(lemonadedb.Messages.Where(p => p.user == user).ToList()); 

私は、これはEntity Frameworkのクエリを記述するとき、人々は作ることは非常に一般的な間違いであると思います。

関連する問題