2011-05-27 81 views
2

我能成功地從我的控制器返回一個模型是這樣的:返回的EF模型類

return View(lemonadedb.Messages.ToList()); 

它是由我的看法完全解釋。

現在我只想顯示Messages.user == Membership.GetUser()。ToString()的消息。

但是當我這樣做:

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

我得到:

「LINQ到實體不承認 方法 'System.String的ToString()' 方法 ,這種方法不能將 翻譯成商店表達。'

我需要一些方法來縮小消息表的結果。

我應該以某種方式使用find()方法嗎?我認爲這只是針對ID的。

我該怎麼做?

+0

拍攝...我剛剛意識到這並不容易返回和處理多個模型。我想我應該使用ViewData機制。 – micahhoover 2011-06-01 08:11:52

回答

3

您遇到此問題的原因是Entity Framework試圖將表達式Membership.GetUser().ToString()評估爲SQL查詢。您需要創建一個新變量來存儲此表達式的值並將其傳遞到您的查詢中。然後,實體框架將按照您的預期進行解釋。

下面應該工作:

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

我懷疑這是一個非常常見的錯誤,人們編寫實體框架查詢的時候做出。