首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架如何在生成的SQLServer中指定参数类型(SQL2005)

实体框架如何在生成的SQLServer中指定参数类型(SQL2005)
EN

Stack Overflow用户
提问于 2010-06-04 03:47:14
回答 2查看 2.6K关注 0票数 1

在实体框架中,我有一个从数据库生成的实体'Client‘。有一个名为“Account”的属性,它在存储模型中定义为:

在概念模型中为:

当使用Account的变量生成select语句时,即

代码语言:javascript
运行
复制
where m.Account == myAccount...

实体框架生成一个参数类型为NVarchar(6)的参数化查询。问题是表中的列是char(6)数据类型。当执行此操作时,由于数据类型的差异,会对性能造成很大的影响。Account是表上的一个索引,而不是使用索引,我相信会执行索引扫描。

有谁知道如何强制EF不使用Unicode作为参数,而使用Varchar(6)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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常量和参数。

我想我需要升级一下。

票数 2
EN

Stack Overflow用户

发布于 2010-06-04 04:16:40

字段的“属性”窗口有3个属性,它们应执行您所要求的操作: Fixed Length、Max Length和Unicode,当您在设计器中选择适当的字段时,它们位于“属性”窗口的“方面”组中。

我目前正在研究EF4,不确定在以前的EF版本中是否存在这些。

在XML中,它应该看起来像这样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2969237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档