如果 char(2) 列的默认值为两个空格,则 Linq quote 不返回任何项目
本文关键字:Linq quote 返回 项目 任何 空格 char 默认值 如果 两个 | 更新日期: 2023-09-27 17:55:46
我有一个ProdFinSize
表,上面有Range
、Color
、Model
、Scale
、Size
、Rise
、Inseam
列,Inseam
列的数据类型是char(2)
,默认值为两个空格。
我编写了这个 SQL 查询来测试我想要的结果。
SELECT *
FROM ProdFinSize
WHERE Range = '020'
and Color = '05'
and Model = 'JU'
and Scale = '1'
and Size = '34'
and Rise = 'R'
and inseam = '';
当我执行此操作时,它会按预期返回单个项目。
接下来,我在 ASP.NET WebAPI 中使用 LINQ to Entities 实现了同样的事情
这是我的 api 函数调用
// GET /api/inventory/stockcheck
[Route("CheckStock")]
[HttpGet]
public IHttpActionResult CheckStock(string range, string color, string model, string scale,
string size, string rise, string inseam = "")
{
try
{
ProdFinSize product = null;
product = berle.ProdFinSizes.Single(
item =>
item.Range == range &&
item.Color == color &&
item.Model == model &&
item.Scale == scale &&
item.Size == size &&
item.Rise == rise &&
item.Inseam == inseam
);
// check if we found a matching product
if (product != null)
{
// see if the item is in-stock
var available = (product.FinSzOnHand-product.FinSzAloc-product.FinSzRlsd) > 0;
return Ok(available.ToString());
}
return Ok("False");
}
catch(Exception e)
{
return Ok(e.Message);
//return Ok("Item not found");
}
}
现在,当我进行 api 调用并传递我在 SQL 查询中使用的相同值时,它会返回一条消息:Sequence Contains No Elements
.
有人可以告诉我我缺少什么以及为什么 LINQ to Entities 中的相同查询没有返回单个结果?
我是 LINQ to Entities 的新手,所以我不确定我是否做错了什么。
注意:我无法更改数据库表上的任何列或列数据类型。
当我运行 SQL 事件探查器时,将执行以下查询。
exec sp_executesql N'SELECT TOP (2)
[Extent1].[CompanyCode] AS [CompanyCode],
[Extent1].[Range] AS [Range],
[Extent1].[Color] AS [Color],
[Extent1].[Model] AS [Model],
[Extent1].[Scale] AS [Scale],
[Extent1].[Inseam] AS [Inseam],
[Extent1].[Size] AS [Size],
[Extent1].[Rise] AS [Rise],
[Extent1].[FinSzProd] AS [FinSzProd],
[Extent1].[FinSzOnHand] AS [FinSzOnHand],
[Extent1].[FinSzXfrIn] AS [FinSzXfrIn],
[Extent1].[FinSzXfrOut] AS [FinSzXfrOut],
[Extent1].[FinSzRetn] AS [FinSzRetn],
[Extent1].[FinSzShip] AS [FinSzShip],
[Extent1].[FinSzRsrvd] AS [FinSzRsrvd],
[Extent1].[FinSzRlsd] AS [FinSzRlsd],
[Extent1].[FinSzAloc] AS [FinSzAloc],
[Extent1].[DateTimeStamp] AS [DateTimeStamp],
[Extent1].[FormID] AS [FormID],
[Extent1].[UserID] AS [UserID],
[Extent1].[rowguid] AS [rowguid]
FROM (SELECT
[ProdFinSize].[CompanyCode] AS [CompanyCode],
[ProdFinSize].[Range] AS [Range],
[ProdFinSize].[Color] AS [Color],
[ProdFinSize].[Model] AS [Model],
[ProdFinSize].[Scale] AS [Scale],
[ProdFinSize].[Inseam] AS [Inseam],
[ProdFinSize].[Size] AS [Size],
[ProdFinSize].[Rise] AS [Rise],
[ProdFinSize].[FinSzProd] AS [FinSzProd],
[ProdFinSize].[FinSzOnHand] AS [FinSzOnHand],
[ProdFinSize].[FinSzXfrIn] AS [FinSzXfrIn],
[ProdFinSize].[FinSzXfrOut] AS [FinSzXfrOut],
[ProdFinSize].[FinSzRetn] AS [FinSzRetn],
[ProdFinSize].[FinSzShip] AS [FinSzShip],
[ProdFinSize].[FinSzRsrvd] AS [FinSzRsrvd],
[ProdFinSize].[FinSzRlsd] AS [FinSzRlsd],
[ProdFinSize].[FinSzAloc] AS [FinSzAloc],
[ProdFinSize].[DateTimeStamp] AS [DateTimeStamp],
[ProdFinSize].[FormID] AS [FormID],
[ProdFinSize].[UserID] AS [UserID],
[ProdFinSize].[rowguid] AS [rowguid]
FROM [dbo].[ProdFinSize] AS [ProdFinSize]) AS [Extent1]
WHERE ([Extent1].[Range] = @p__linq__0) AND (@p__linq__0 IS NOT NULL) AND ([Extent1].[Color] = @p__linq__1) AND (@p__linq__1 IS NOT NULL) AND ([Extent1].[Model] = @p__linq__2) AND (@p__linq__2 IS NOT NULL) AND ([Extent1].[Scale] = @p__linq__3) AND (@p__linq__3 IS NOT NULL) AND ([Extent1].[Size] = @p__linq__4) AND (@p__linq__4 IS NOT NULL) AND ([Extent1].[Rise] = @p__linq__5) AND (@p__linq__5 IS NOT NULL) AND ([Extent1].[Inseam] = @p__linq__6) AND (@p__linq__6 IS NOT NULL)',N'@p__linq__0 varchar(8000),@p__linq__1 varchar(8000),@p__linq__2 varchar(8000),@p__linq__3 varchar(8000),@p__linq__4 varchar(8000),@p__linq__5 varchar(8000),@p__linq__6 varchar(8000)',@p__linq__0='020',@p__linq__1='05',@p__linq__2='JU',@p__linq__3='1',@p__linq__4='34',@p__linq__5='R',@p__linq__6=NULL
参数 inseam
的默认值是 " 而不是 " "(两个空格)