C#学习教程:EF 4.1 / Linq-to-SQL:什么是更好的:使用Equals或==?分享


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

我们正在讨论在LINQ查询中对int比较使用Equals== 。 我们正在使用EF4.1 Code First。 什么是更好的?

 var query = context.Boodschappen .Where(b => b.BoodschapID == id).FirstOrDefault(); 

要么:

 var query = context.Boodschappen .Where(b => b.BoodschapID.Equals(id)).FirstOrDefault(); 

为什么

对于Linq To Sql,你不需要。 相反,使用Object.Equals: .Where(b => Object.Equals(b.BoodschapID, id)

为什么? 如果id恰好是一个可以为空的uniqueidentifier,那么SQL Generator中会出现Bug。 如果使用b.BoodschapID.Equals(id)或b.BoodschapID == id和b.BoodschapID恰好是一个可以为空的Guid,生成的SQL将不会是WHERE BoodschapID IS NULL而是WHERE BoodschapID = @p0这将不会返回任何结果。

我确信EF曾经有同样的错误。 不知道它是否已经解决了。 你可以在这个问题中找到更多细节,只要知道一些答案会产生可怕的SQL。

除此之外,在我知道的Linq To SQL中,Equals和==之间没有区别。

我更喜欢’前者’。 它也适用于可空属性。

上述就是C#学习教程:EF 4.1 / Linq-to-SQL:什么是更好的:使用Equals或==?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960114.html

发表评论

邮箱地址不会被公开。 必填项已用*标注