gpt4 book ai didi

c# - Entity Framework 4 中的简单条件 LINQ 查询

转载 作者:可可西里 更新时间:2023-11-01 09:08:23 25 4
gpt4 key购买 nike

我最近将这段代码迁移到了 Entity Framework 4,但失败了。显然,如果 status 没有值,则返回所有匹配项,如果它有值匹配 user.StatusID == 1

return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
(!status.HasValue || user.StatusID == 1)
);

异常返回:

ArgumentException: The specified value is not an instance of type 'Edm.Int32'
Parameter name: value

然而,删除条件测试并且它工作正常:

return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
user.StatusID == 1
);

有什么想法吗?如何在 EF 4 中执行条件测试? if 行肯定不会分开吗?

我在 Linq to Sql 中一次又一次地使用这些条件测试;这在 EF 4 中不起作用的原因真的很奇怪。一定有一些简单的错误,也许在 EF 4.0 中有推荐的替代方法。

谢谢大家的帮助,
格雷厄姆

最佳答案

好的,我结合两件事解决了这个问题。

  1. 做一个简单的空测试。
  2. 测试本地转换 status 变量没有 .Value 方法。

两者都必须到位,否则它将继续失败并出现错误!测试 value 属性会很好,但我想查询一定非常简单 - 非常有趣!

return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
(status == null || user.StatusID == (int) status)
);

我会等待任何更好的实现,否则接受我自己的答案。但感谢大家的帮助。

关于c# - Entity Framework 4 中的简单条件 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com