我正在查询tinyint列,实体框架生成一个SELECT查询,该查询为此列引入了CAST到INT,即使我在WHERE子句中使用的值是字节类型.
查看模型,我的tinyint列生成的Type是byte.
看代码:
byte byteValue = 6;
var entityList = from r in rep.DataContext.FooTable
where r.TinyintColumn == byteValue
select r;
Run Code Online (Sandbox Code Playgroud)
查看生成的查询:
SELECT [Extent1].[TinyintColumn] AS [TinyintColumn] WHERE @p__linq__0 = CAST( [Extent1].[TinyintColumn] AS int)
Run Code Online (Sandbox Code Playgroud)
我对性能有严格的限制,所以我不希望任何选择中的那些CAST.
所以我的问题是,有没有办法避免这个CAST超过列tinyint?或者我做错了什么?
提前致谢.
出于想法在这里.我有一个简单的表,模型首先与Entity Framework映射,我得到以下SQL生成:
(@p__linq__0 int,@p__linq__1 int)SELECT
[Extent1].[BucketRef] AS [BucketRef],
[Extent1].[VariantNo] AS [VariantNo],
[Extent1].[SliceNo] AS [SliceNo],
[Extent1].[TradeNo] AS [TradeNo],
[Extent1].[TradeBegin] AS [TradeBegin],
[Extent1].[TradeEnd] AS [TradeEnd],
FROM [simstg].[Trade] AS [Extent1]
WHERE ((( CAST( [Extent1].[BucketRef] AS int) = @p__linq__0) AND ( NOT (( CAST( [Extent1].[BucketRef] AS int) IS NULL) OR (@p__linq__0 IS NULL)))) OR (( CAST( [Extent1].[BucketRef] AS int) IS NULL) AND (@p__linq__0 IS NULL))) AND ((( CAST( [Extent1].[VariantNo] AS int) = @p__linq__1) AND ( NOT (( CAST( [Extent1].[VariantNo] AS int) IS NULL) OR …Run Code Online (Sandbox Code Playgroud)