Kee*_*ker 3 .net c# linq entity-framework linq-to-sql
我们正在讨论在LINQ查询中使用Equals
或==
进行int比较.我们正在使用EF4.1 Code First.什么是更好的?
var query = context.Boodschappen
.Where(b => b.BoodschapID == id).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
要么:
var query = context.Boodschappen
.Where(b => b.BoodschapID.Equals(id)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
而且,为什么?
对于Linq To Sql,你不需要.相反,使用Object.Equals:.Where(b => Object.Equals(b.BoodschapID, id)
为什么?由于SQL生成器中存在Bug,如果id恰好是可空的uniqueidentifier.如果使用b.BoodschapID.Equals(id)或b.BoodschapID == id和b.BoodschapID恰好是可以为空的Guid,则生成的SQL将不会是WHERE BoodschapID IS NULL
,而是WHERE BoodschapID = @p0
不会返回任何结果.
我确信EF曾经有同样的错误.不知道它是否已经解决了.你可以在这个问题中找到更多细节,只要知道一些答案会产生可怕的SQL.
除此之外,我知道的Linq To SQL中的Equals和==之间没有区别.
归档时间: |
|
查看次数: |
4696 次 |
最近记录: |