【问题标题】:Returning an EF model class返回 EF 模型类
【发布时间】:2011-05-27 07:46:59
【问题描述】:

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

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 的。

我应该怎么做?

【问题讨论】:

  • Shoot ... 我刚刚意识到退货和处理多个模型并不容易。我想我应该使用 ViewData 机制。

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


【解决方案1】:

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

以下应该有效:

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

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

【讨论】:

    猜你喜欢
    • 2020-05-12
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多