我最近已將此代碼遷移到實體框架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