EF 4.1/Linq-to-SQL:什么是更好的:使用Equals或==?

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)

而且,为什么

Mic*_*tum 9

对于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和==之间没有区别.