GON*_*ale 10 .net c# linq entity-framework entity-framework-4
我最近将此代码迁移到Entity Framework 4,但它失败了.显然,如果status没有值,则返回所有匹配项,如果它的值匹配的话user.StatusID == 1.
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
(!status.HasValue || user.StatusID == 1)
);
Run Code Online (Sandbox Code Playgroud)
返回异常:
ArgumentException: The specified value is not an instance of type 'Edm.Int32'
Parameter name: value
Run Code Online (Sandbox Code Playgroud)
但是,删除条件测试,它工作正常:
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
user.StatusID == 1
);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?你如何在EF 4中进行条件测试?如果线条肯定不分开?
我在Linq to Sql中一次又一次地使用这些条件测试; 为什么这在EF 4中不起作用真的很奇怪.必须有一些简单的错误,也许在EF 4.0中有一种推荐的替代方法.
谢谢你的帮助,
格雷厄姆
好吧,我通过两件事的组合来解决它.
status变量..Value两者都必须到位,否则它将继续失败并出现错误!测试value属性会很不错,但我想查询必须非常简单 - 非常有趣!
return users.SingleOrDefault(
user =>
user.Username == username &&
user.EncryptedPassword == password &&
(status == null || user.StatusID == (int) status)
);
Run Code Online (Sandbox Code Playgroud)
我会等待任何更好的实施,否则接受我自己的答案.但感谢大家的帮助.
| 归档时间: |
|
| 查看次数: |
5618 次 |
| 最近记录: |