0

典型地,人们可以使用以下查询检索来自主键值的记录(或我们可以使用Find(),视情况而定):实体框架6:主键的ToString()相比

using (var context = new SomeContext()) 
{ 
    entity = context.Users.SingleOrDefault(x => x.Id == id); 
} 

执行相同查询的影响是什么,但ToString()对主键值有什么影响?

像这样:

using (var context = new SomeContext()) 
{ 
    entity = context.Users 
        .SingleOrDefault(x => x.Id.ToString() == id.ToString()); 
} 
+1

为什么要在那里?为什么不多次调用'.ToString()',并追加'''''好好衡量?更严重的一点是,你应该能够追踪没有任何问题的SQL,并且自己看看是否有区别。此外,是否有差异可能取决于“Id”的类型。 – hvd 2014-09-27 15:24:48

+0

是的,为什么问这里,你可以做一个简单的基准?我们甚至无法回答你的问题。 – 2014-09-27 20:52:57

回答

1

在我看来,如果你有一个像100万元的表格查询可以采取额外的1秒执行。几乎与双倍相同

convert(nvarchar(36), Id) 

+值比较。你可以想象短路的char比较x36次。

+0

您可能想尝试一下http://www.hibernatingrhinos.com/products/efprof – Margus 2014-09-27 15:31:29