InvalidOperationException при получении объединенных данных с помощью Entity Framework на Blazor ServerC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 InvalidOperationException при получении объединенных данных с помощью Entity Framework на Blazor Server

Сообщение Anonymous »

Я работаю над серверным проектом Blazor, где мне нужно получить и объединить данные из нескольких таблиц с помощью Entity Framework Core в методе OnInitializedAsync. Однако я столкнулся со следующей ошибкой:

InvalidOperationException: вторая операция была запущена в этом экземпляре контекста до завершения предыдущей операции. Обычно это вызвано тем, что разные потоки одновременно используют один и тот же экземпляр DbContext.

Вот мой код ниже:

Код: Выделить всё

protected override async Task OnInitializedAsync()
{

PeopleTypes = await DbContext.PeopleTypes.Select(pts => new PeopleType
{
Id = pts.Id,
TypeName = pts.TypeName
}).ToListAsync() ?? new List
();

Peoples = await DbContext.People.Select(pl => new People
{
Id = pl.Id,
Name = pl.Name,
CompanyId = pl.CompanyId,
TypeId = pl.TypeId
}).ToListAsync() ?? new List();

CompanyLists = await DbContext.CompanyList.Select(cl => new CompanyList
{
Id = cl.Id,
CompanyName = cl.CompanyName
}).ToListAsync() ?? new List();

ClassDetails = await DbContext.ClassSessionsDetails
.Where(csd => csd.CsID == CSId)
.Where(csd => csd.CompanyId == selectedCompany)
.Select(csd => new ClassSessionDetails
{
Id = csd.Id,
CsID = csd.CsID
}).ToListAsync();

classMembersData = await DbContext.ClassSessionsDetails
.Join(DbContext.ClassSessionsMembers,
csd => csd.Id,
csm => csm.CSD_Id,
(csd, csm) => new { csd, csm })
.Join(DbContext.People,
combined => combined.csm.PeopleId,
people => people.Id,
(combined, people) => new { combined.csd, combined.csm, people })
.GroupJoin(DbContext.CompanyList,
combined => combined.people.CompanyId,
company => company.Id,
(combined, companies) => new { combined.csd, combined.csm, combined.people, company = companies.FirstOrDefault() })
.GroupJoin(DbContext.PeopleTypes,
combined => combined.people.TypeId,
peopleType => peopleType.Id,
(combined, peopleTypes) => new { combined.csd, combined.csm, combined.people, combined.company, peopleType = peopleTypes.FirstOrDefault() })
.Select(result => new ClassMembers
{
PeopleId = result.people.Id,
Name = result.people.Name,
CompanyId = result.company.Id,
CompanyName = result.company.CompanyName,
PeopleTypeId = result.peopleType.Id,
PeopleTypeName = result.peopleType.TypeName
}).ToListAsync();

await base.OnInitializedAsync();
}
Есть ли у кого-нибудь предложения о том, как решить эту проблему или как я могу улучшить свой запрос, чтобы избежать конфликтов одновременных операций? Спасибо.


Подробнее здесь: https://stackoverflow.com/questions/790 ... ork-in-bla
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»