返回EF模型类

时间:2011-05-27 07:47:00

标签: entity-framework asp.net-mvc-3 ef-code-first

我可以成功地从我的控制器返回一个模型:

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

我的观点完全解释了它。

现在我只想显示Messages.user == Membership.GetUser()。ToString()。

的消息。

但是当我这样做时:

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

我明白了:

  

'LINQ to Entities无法识别   方法'System.String ToString()'   方法,这个方法不能   翻译成商店表达。'

我需要一些方法来缩小消息表的结果。

我应该以某种方式使用find()方法吗?我以为这只是为了ID。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您遇到此问题的原因是Entity Framework正在尝试将表达式Membership.GetUser().ToString()计算为SQL查询。您需要创建一个新变量来存储此表达式的值并将其传递给查询。然后,实体框架将按照您的预期解释它。

以下内容应该有效:

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

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