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