我有一个应该很简单的问题,但是我一直无法找到答案。
我正在使用EF4 CTP-5 Code First Model和手动生成的POCO。它将生成的SQL中的字符串比较处理为
WHERE N'Value' = Object.Property
我知道我可以使用以下方法覆盖这个功能:
[Column(TypeName = "varchar")]
public string Property {get;set;}
这解决了单个出现的问题,并且正确地生成以下SQL:
WHERE 'Value' = Object.Property
然而,我正在处理一个非常庞大的领域模型,并且逐个字符串字段设置TypeName = "varchar" 将非常繁琐。我希望指定EF应该将所有字符串视为varchar,因为这是该数据库的标准,nvarchar是异常情况。
想要纠正这一点的原因是查询执行效率。在SQL Server 2k5中,varchar和nvarchar之间的比较非常低效,其中varchar到varchar的比较几乎立即执行。