本质上,我有一个包含邮政编码的表格。邮政编码字段被定义为'char(5)'。我正在使用代码优先,因此我在我的ZipCode属性上放置了这些属性:
[Key, Column( Order = 0, TypeName = "nchar"), StringLength(5)]
public string ZipCode { get; set; }
现在,如果我在EF中查询这个:
var zc = db.ZipCodes.FirstOrDefault(zip => zip.ZipCode == "12345");
生成的 SQL 使用 nvarchar(4000) 来注入参数。嗯?这是因为 "12345" 在技术上是一个未知长度的字符串吗?EF 不应该聪明到只在查询该表时使用正确的 "nchar(5)" 吗?
我之所以问,是因为 nvarchar(4000) 查询需要半秒钟,而正确范围的查询更快(读取更少)。
任何帮助/建议将不胜感激。