相关疑难解决方法(0)

tinyint列的生成查询将CAST引入int

我正在查询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?或者我做错了什么?

提前致谢.

c# sql-server entity-framework

15
推荐指数
2
解决办法
7251
查看次数

实体框架 - 荒谬的查询,将smallint转换为int进行比较

出于想法在这里.我有一个简单的表,模型首先与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)

entity-framework entity-framework-6

10
推荐指数
1
解决办法
3580
查看次数