c# - Linq to Entities - 在 Web 中查询错误但不在单元测试中查询

标签 c# entity-framework linq-to-entities

我有一个查询,当我在 MVC 2.0 项目中使用它时出错,但当我针对它运行单元测试时却没有(工作正常)。下面是查询,“用户”是一个实体。我得到的错误显示在 EF (http://msdn.microsoft.com/en-us/library/bb896317.aspx) 的已知问题上,但它似乎很基本,这应该有效,但我不是真的做他们正在做的事。这是针对 3.5 框架和 sql 2005 后端。

错误是

“无法创建‘闭包类型’类型的常量值。在此上下文中仅支持基本类型(‘例如 Int32、String 和 Guid’)。”

查询是

User user = (from u in db.Users
                where u.UserId == (Guid)providerUserKey
                && u.Application.LoweredApplicationName == this.ApplicationName.ToLower()
                select u).FirstOrDefault();

我能够确定查询失败是因为选择了“用户”。然而,当我使用 u.UserName = userName 时,相同的查询工作得很好。我也尝试过像 UserId.ToString() (也不支持)和 u.UserId.CompareTo((Guid)providerKey) > 0 这样的变体。所有都抛出某种类型的错误。

有什么想法吗?

谢谢!

最佳答案

来自 this post ,看起来问题出在 providerUserKey,而不是 u.UserId

尝试将 providerUserKey 分配给 Guid,并使用它:

Guid id = (Guid)providerUserKey;

User user = (from u in db.Users
                where u.UserId == id
                && u.Application.LoweredApplicationName == this.ApplicationName.ToLower()
                select u).FirstOrDefault();

关于c# - Linq to Entities - 在 Web 中查询错误但不在单元测试中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063418/

相关文章:

entity-framework - Entity Framework 错误 : "The container ' XXXX' specified for the FunctionImport could not be found in the current workspace."

c# - 针对数据库的 Webapi 验证

c# - groupby 内部 groupby 和 All() 性能

c# - 如何从 Entity Framework 4 的 LINQ 表达式中执行 Oracle 函数?

c# - 使用一个模型发送两个 LINQ 查询以查看

C# 对类的嵌套属性的反射(reflection)

mysql - SQL 错误 (1231) : Variable 'optimizer_switch' can't be set to the value of 'derived_merge=OFF'

c# - 创下本地高分?

c# - 使用int.TryParse C#时发生编译错误

linq-to-sql - 有没有一种方法可以强制将LINQ中生成的查询的const内联到SQL?