我最近已将此代码迁移到实体框架4并且失败。显然,如果状态没有值,则返回所有匹配,如果它具有与user.StatusID == 1
相匹配的值。实体框架中的简单条件LINQ查询4
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中执行条件测试?当然,如果线条不分开?我在Linq to Sql中一次又一次地使用这些条件测试;对于EF 4中不起作用的原因真的很奇怪。一定有一些简单的错误,或许在EF 4.0中有一个推荐的替代方法。
感谢您的帮助球员,
格雷厄姆
什么'Edm.Int32'?是你自己实现的'System.Int32'吗? – Stecya 2011-04-26 11:12:23
@Stecya:http://msdn.microsoft.com/en-us/library/bb387164.aspx,似乎是EF的一些内部特征。 – Euphoric 2011-04-26 11:14:05