Csharp/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.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/960114.html

(0)
上一篇 2021年11月24日
下一篇 2021年11月24日

精彩推荐