我有一个查询,当我在 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/