В моем Web Api приложения У меня есть несколько таблиц, как эти, и при создании process
и загрузки файлов некоторой информации, добавленной к tableLogs
:Удаление записей из перемножения таблиц ASP Web Api
tableProcess
-------------------
ProcessId Name
1 proc1
2 proc2
tableFile
------------------------------
FileId ProcessId Name
1 1 file1
2 1 file2
3 1 file3
4 2 file4
5 2 file5
tableLogs
------------------
LogId FileId Description
1 1 log1
2 1 log2
3 2 log3
4 2 log4
5 3 log5
6 4 log6
7 5 log7
Мне нужно, когда удалить process
удалять записи из всех этих таблиц, например, если я хочу, чтобы удалить proc1
, файлы file1
, file2
, & file3
следует исключить из tableFile
и первых пяти журналов, которые соответствовали этим три файлу должен быть удален из tableLogs
. И я не смог удалить журналы, связанные с tableFile
. Любые предложения, как это сделать?
UPDATE
создать процедуру магазина, как это было предложено @ websch01ar в своем ответе, и теперь мой метод выглядит следующим образом:
public IHttpActionResult DeleteLeadProcess(int id)
{
var procId = db.tableProcess.SingleOrDefault(p => p.ProcessId == id);
string errMsg = null;
using (var transaction = db.Database.BeginTransaction())
{
try
{
db.deleteProcess(id);
transaction.Commit(); <-- error here
}
catch (Exception e)
{
transaction.Rollback();
errMsg = e.Message;
return BadRequest(errMsg);
}
}
return Ok("Process " + procId.ProcessName + " has been deleted successfully!");
}
процедура отлично работает, если я запустить его в SQL Server, но в контроллере у меня есть ошибка «A System.Data.SqlClient.SqlException было выбрано:« Операция транзакции не может быть выполнена, потому что есть ожидающие запросы на эту транзакцию ».
Можете ли вы использовать хранимые процедуры в своей среде? – websch01ar
@ websch01ar, да, я могу использовать хранимые процедуры –
Alex, я бы рекомендовал этот тип процесса. Это упростит ваш веб-метод api и поместит работу SQL там, где он принадлежит ... в SQL DB. Вам нужна помощь в написании этого sproc? – websch01ar