我最近将这段代码迁移到了Entity Framework 4,但它失败了。显然,如果状态没有值,则返回所有匹配项;如果有值,则匹配那些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中有推荐的替代方法。
谢谢大家的帮助,
Graham
Edm.Int32
是什么?它是你自己实现的System.Int32
吗? - Stecya