У меня есть две таблицы, скажем, T1 и T2. T1 имеет ссылку на T2, как показано ниже:
Таблица: T1
|Col1|
|v1 |
|v2 |
|v3 |
Таблица: T2
|Id|Col1|Col2|
|1 |v1 |v2 |
|2 |v2 |v1 |
|3 |v1 |v3 |
|4 |v3 |v1 |
Итак, у нас есть первичный ключ T1 в качестве внешних ключей T2, Col1 и Col2.
Теперь, когда приходит запрос на удаление для T1 (скажем, я хочу удалить v1), необходимо сначала удалить его ссылочную строку из T2 (в данном случае Id 1,2,3,4 в T2), а затем запись в T1 будет удалить.
Теперь, когда мы пытаемся удалить это с помощью Entity Framework, он застрял в тупике и завершается ошибкой.
Любое предложение о том, как решить эту проблему?
Обновлен код EF:
using (_dbContext as IDisposable)
{
var t1= _dbContext.T1
.Include(t1 => t1.Table3)
.FirstOrDefault(x => x.Id == Col1);
var lstT2 = _dbContext.T2
.Where(x => x.Col1 == value ||
x.Col2== value).ToList();
using (var transaction = _dbContext.BeginTransaction())
{
try
{
foreach (var t2 in lstT2)
{
_dbContext.T2.Remove(t2);
_dbContext.SaveChanges();
}
_dbContext.T1.Remove(t1);
_dbContext.SaveChanges();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
NLogger.Log(LogLevel.Error, ex.Message);
throw ex;
}
}