我有一个包含varchar列的表,我正在使用Entity Framework在WHERE子句中使用此列.
实体框架生成查询,N''因此无法使用列上的索引.有没有办法强制实体框架生成varchar查询而不是nvarchar一个?
它实际上取决于你如何构建你的EF模型,如果你正在使用它的Designer,你可以为每一列指定所需的数据类型(在你的情况下只需设置varchar并完成).
如果您使用的是代码优先方法,则必须使用适当的属性装饰表示该列的属性(string.NET中的对象始终为Unicode,因此nvarchar默认情况下将映射),只需执行此操作(使用数据注释,如果你正在使用StringAttribute它的IsUnicode财产来false):
[Column(TypeName = "varchar")]
public string YourColumnName
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用EntityFunctions.AsNonUnicode(string)方法,因此EF不会将字符串值作为nvarchar传递.我对EF 5和EDMX也存在同样的问题,其中Oracle数据库忽略了varchar2列索引,这对我有用.
var q = (from TableClass t in TableName
where t.varchar2Column == EntityFunctions.AsNonUnicode(someText));
Run Code Online (Sandbox Code Playgroud)
MSDN参考:https://msdn.microsoft.com/pt-br/library/system.data.objects.entityfunctions(v = vs.110).aspx
| 归档时间: |
|
| 查看次数: |
5822 次 |
| 最近记录: |