EF Core: Как выполнить необработанный SQL с рекурсивным результатом CTE и Scalar Boolean (существует запрос)?C#

Место общения программистов C#
Ответить
Anonymous
 EF Core: Как выполнить необработанный SQL с рекурсивным результатом CTE и Scalar Boolean (существует запрос)?

Сообщение Anonymous »

Я использую структуру TPT (таблица-тип) для моделирования моего диска, где DriveItem-это родительский класс, а папка и файл наследуют от DriveItem. Я хочу вернуть один логический результат из необработанного SQL -запроса, как это: < /p>

Код: Выделить всё

public async Task HasDeletedAncestorAsync(Guid childFolderId)
{
const string sql = @"
WITH RECURSIVE path AS (
SELECT ""DriveItemId"", ""ParentFolderId"", ""IsDeleted""
FROM ""Folders""
WHERE ""DriveItemId"" = @p0

UNION ALL

SELECT f.""DriveItemId"", f.""ParentFolderId"", f.""IsDeleted""
FROM ""Folders"" f
JOIN path p ON f.""DriveItemId"" = p.""ParentFolderId""
WHERE p.""ParentFolderId"" IS NOT NULL
)
SELECT EXISTS (
SELECT 1 FROM path WHERE ""IsDeleted"" = TRUE
);
";

bool hasDeleted = await DbContext.Database
.SqlQueryRaw(sql, childFolderId) // ❌ this causes error
.SingleAsync();

return hasDeleted;
}
< /code>
Я получаю ошибку, что ParentFolderid не существует, но он существует, и я также проверял чувствительность случая. Я использую postgresql 
.
Exception data:
Severity: ERROR
SqlState: 42703
MessageText: column "ParentFolderId" does not exist
Position: 105
File: parse_relation.c
Line: 3647
Routine: errorMissingColumn
< /code>
Вы также можете обратиться к этому изображению. Который показывает ParentFolderid.
Введите описание изображения здесь

Подробнее здесь: https://stackoverflow.com/questions/796 ... -result-ex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»