Используя EF Core 2.2.2, у меня есть два простых запроса с целью определить, используется ли Color
в таблице CollectionItem
или PuzzleColor
:
var isACollectionItem = _applicationDbContext.CollectionItem.Any(collectionItem => collectionItem.ColorId == color.Id);
var isAPuzzleItem = _applicationDbContext.PuzzleColor.Any(puzzleColor => puzzleColor.ColorId == color.Id);
var eitherOr =
_applicationDbContext.CollectionItem.Any(collectionItem => collectionItem.ColorId == color.Id)
|| _applicationDbContext.PuzzleColor.Any(puzzleColor => puzzleColor.ColorId == color.Id);
Первые две строки генерируют два отдельных запроса, которые выглядят следующим образом:
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM [CollectionItem] AS [collectionItem]
WHERE [collectionItem].[ColorId] = @__color_Id_0)
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
END
Объединение их с помощью оператора ||
означает, что он будет запускаться как в случае, если первый не соответствует действительности, в противном случае он будет выполняться толькопервый запрос.
Можно ли объединить обе проверки в один запрос с EF?