0
在數據庫表上有一列類型爲char(2)
的列。在.NET Entity Framework中使用字符串屬性時,如何控制SQL查詢參數的類型
當我在LINQ中使用參數(如.Where(x => x.Code == code)
)時,SQL查詢參數被轉換爲varchar(max)
,我真的很喜歡它是char(2)
以避免隱式轉換。這是因爲查詢沒有按照我想要的方式使用數據庫的索引。
Property(c => c.Code)
.HasColumnType("char")
.IsFixedLength()
.HasMaxLength(2);
代碼優先映射如上所示。似乎影響翻譯的唯一東西是.HasColumnType("char")
它似乎不影響查詢翻譯,因爲它影響它是否選取varchar(max)
或nvarchar(max)
。
我想到了兩種解決方案,一種是更改數據庫,以便使用int
和查找來代替char代碼,另一種是將代碼轉換爲使用表達式。兩件事我寧願不要做,如果有更好的方法來控制映射到SQL。