在实体框架中,我有一个从数据库生成的实体'Client‘。有一个名为“Account”的属性,它在存储模型中定义为:
在概念模型中为:
当使用Account的变量生成select语句时,即
where m.Account == myAccount...
实体框架生成一个参数类型为NVarchar(6)的参数化查询。问题是表中的列是char(6)数据类型。当执行此操作时,由于数据类型的差异,会对性能造成很大的影响。Account是表上的一个索引,而不是使用索引,我相信会执行索引扫描。
有谁知道如何强制EF不使用Unicode作为参数,而使用Varchar(6)?
发布于 2010-06-04 05:11:46
我想我找到了我自己问题的答案。这里
http://blogs.msdn.com/b/adonet/archive/2010/05/10/improvements-to-generated-sql-in-net-4-0.aspx
它谈到了对EF 4.0中生成的sql的改进。具体地说,它说
提供对非Unicode列进行高效查询的机制
在Unicode3.5中,每当在.NET to Entities查询中使用常量或参数时,我们都将其视为Unicode。因此,在将常量与存储在SQL Server上的非unicode列中的属性进行比较时,如果该列上有索引,则不会使用该索引。
为了解决这个问题,我们现在生成在LINQ To Entities查询中与非unicode列进行比较时使用的非unicode常量和参数。
我想我需要升级一下。
https://stackoverflow.com/questions/2969237
复制相似问题