Использование ServiceStack ORMLite для удаления строк с условием в другой таблице

#c# #sql #sql-server #servicestack #ormlite-servicestack

#c# #sql #sql-сервер #servicestack #ormlite-servicestack

Вопрос:

У меня есть следующие таблицы в базе данных:

 Table C    Table B    Table A
-------    -------    -------
Id         Id         Id
BId        AId
  

Столбец BId является внешним ключом к TableB. AId — это внешний ключ к TableA. Я хочу удалить все строки из таблицы C, которые связаны со строкой в TableA. Следующий SQL (используемый в SQL Management Studio) выполняет трюк:

 DELETE [ns].[TableC]
  FROM [ns].[TableC] c
  JOIN [ns].[TableB] b ON c.[BId] = b.[Id]
  WHERE b.[AId] = 530
GO
  

Я попытался использовать следующий код:

 var query = connection.From<TableC>()
            .Join<TableC, TableB>((c, b) => c.BId == b.Id)
            .Where<TableB>(b => b.AId == 530);    
connection.Delete<TableC>(query);
  

Но это приводит к исключению, и при вызове GetLastSql() я получаю:

 DELETE FROM "ns"."TableC" WHERE ("ns"."TableB"."AId" = @0)
  

Как я могу использовать ServiceStack ORMLite для выполнения этого удаления?

Ответ №1:

Поддержка объединения ТАБЛИЦ УДАЛЕНИЯ была недавно добавлена в ORMLite и доступна с версии 4.5.1, которая теперь доступна на MyGet.

Комментарии:

1. Один вопрос, однако, являются ли NuGets в MyGet release-версиями или они бета / RC-версии?

2. @MartinA Это всего лишь промежуточные пакеты предварительного выпуска, которые мы развертываем между нашими официальными выпусками, которые публикуются на NuGet.