Я работаю над серверным проектом 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();
}
Есть ли у кого-нибудь предложения о том, как решить эту проблему или как я могу улучшить свой запрос, чтобы избежать конфликтов одновременных операций? Спасибо.
Я работаю над серверным проектом Blazor, где мне нужно получить и объединить данные из нескольких таблиц с помощью Entity Framework Core в методе OnInitializedAsync. Однако я столкнулся со следующей ошибкой:
InvalidOperationException: вторая операция была запущена в этом экземпляре контекста до завершения предыдущей операции. Обычно это вызвано тем, что разные потоки одновременно используют один и тот же экземпляр DbContext.
Вот мой код ниже: [code]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();
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(); } [/code] Есть ли у кого-нибудь предложения о том, как решить эту проблему или как я могу улучшить свой запрос, чтобы избежать конфликтов одновременных операций? Спасибо.
У меня есть небольшая проблема с структурой сущности 6. Сегодня у меня была ошибка: получение неверной длины столбца от клиента 46. **using EntityFramework.BulkInsert.Extensions;**
//I have a list of person object to insert.
var listToInsert =...
I am working on a repository method in Entity Framework Core to retrieve all applications along with their associated application tokens. My method looks like this:
public async Task GetAllApplications(string? expand = null) { List applications =...
В моем серверном приложении Blazor у меня есть компонент Blazor, который использует второй компонент... внутри второго компонента я вызываю метод службы, который использует структуру сущностей для получения списка «сайтов». Если я использую...
Я работаю с API REST Server Server Server DevOps (локальный сервер TFS/Azure DevOps) из приложения C# с использованием httpclient с использованием usedefaultcredentials = true .
Когда я запускаю приложение локально на моем разработке, вызов API...