2011-05-27 51 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()); 

我怀疑这是一个非常常见的错误,人们编写实体框架查询的时候做出。