Я использую LINQ to Entity в проекте, где я извлекаю кучу данных (из базы данных), объединяю их в кучу объектов и сохраняю их в базе данных. У меня не было проблем с записью в БД перед использованием LINQ to Entity, но я столкнулся с этой проблемой. Вот ошибка, которую я получаю (это «InnerException», само исключение бесполезно!):
Новая транзакция не разрешена, потому что
в
сессия.
Я видел это раньше, когда пытался сохранить свои изменения в цикле. В этом случае цикл завершается, и он пытается выполнить этот вызов, только чтобы дать мне исключение. Вот текущий код:
try
{
//finalResult is a list of the keys to match on for the records being pulled
foreach (int i in finalResult)
{
var queryEff = (from eff in dbMRI.MemberEligibility
where eff.Member_Key == i && eff.EffDate >= DateTime.Now
select eff.EffDate).Min();
if (queryEff != null)
{
//Add a record to the Process table
Process prRecord = new Process();
prRecord.GroupData = qa;
prRecord.Member_Key = i;
prRecord.ProcessDate = DateTime.Now;
prRecord.RecordType = "F";
prRecord.UsernameMarkedBy = "Autocard";
prRecord.GroupsId = qa.GroupsID;
prRecord.Quantity = 2;
prRecord.EffectiveDate = queryEff;
dbMRI.AddObject("Process", prRecord);
}
}
dbMRI.SaveChanges(); //<-- Crashes here
foreach (int i in finalResult)
{
var queryProc = from pro in dbMRI.Process
where pro.Member_Key == i && pro.UsernameMarkedBy == "Autocard"
select pro;
foreach (var qp in queryProc)
{
Audit aud = new Audit();
aud.Member_Key = i;
aud.ProcessId = qp.ProcessId;
aud.MarkDate = DateTime.Now;
aud.MarkedByUsername = "Autocard";
aud.GroupData = qa;
dbMRI.AddObject("Audit", aud);
}
}
dbMRI.SaveChanges(); //<-- AND here (if the first one is commented out)
}
catch (Exception e)
{
//Do Something here
}
По сути, мне нужно вставить запись, получить идентификатор для этой вставленной записи и вставить запись в другую таблицу с идентификатором из первой записи. Учитывая некоторые другие ограничения, невозможно создать отношения FK между ними (я пробовал, но некоторые другие части приложения не позволяют этого, И моя команда администраторов баз данных по любой причине ненавидит FK, но это для другая тема :))
Есть идеи, что может быть причиной этого?
Спасибо!
Редактировать: спасибо за обновление тегов!