У меня есть сценарий, в котором я должен вставить запись в таблицу, взять идентификатор вставленной записи и обновить вторую таблицу (с некоторыми другими свойствами)
Вот пример кода:
public void UpdateLookupDetails()
{
string newId;
{
//Add new record
newId = Guid.NewGuid().ToString();
var newRefUiRecord = new Entities.REFUILBLTXT
{
ID = newId,
ACTIVEFLG = Constant.Flag.Yes,
CRTTS = DateTime.Now,
CRTUID = "cfbc94a9-16a5-11e1-8a27-a2e9ab9c0b63",
LBLTXT = "Description",
LOCALECD = Constant.LanguageCode.English,
MODTS = DateTime.Now,
MODUID = "cfbc94a9-16a5-11e1-8a27-a2e9ab9c0b63",
LBLCD = "LookupList.DESC"
};
_context.REFUILBLTXTs.Add(newRefUiRecord);
}
var sample = _context.ZREFLISTs.FirstOrDefault(x => x.ID == "e8ae24b1-029c-44d2-a413-c25c19189751");
_context.ZREFLISTs.Attach(sample);
sample.REFLISTDESCLBLID = newId;
_context.Entry(sample).Property(x => x.REFLISTDESCLBLID).IsModified = true;
_context.SaveChanges();
}
На данный момент приложение застряло на _context.SaveChanges();
При запуске из интеграционных тестов через минуту или около того оно выдает ошибку, сообщающую
TaskCanceledException: A task was canceled.
Если я закомментирую _context.REFUILBLTXTs.Add(newRefUiRecord);
ИЛИ _context.ZREFLISTs.Attach(sample);
Это работает! Так что это единственное обновление или вставка записей одновременно.
Может кто-нибудь пролить свет на то, в чем здесь проблема?
Среда: Web API 2 + Oracle EF + код сначала