У меня возникла проблема с выполнением асинхронных запросов к базу данных при использовании Entity Framework. Когда я пытаюсь получить какое - либо значение из бд, например:
[Authorize]
public async Task<IActionResult> Edit(int? id)
{
if (id != null)
{
Worker worker = await _context.Workers.FirstOrDefaultAsync(w => w.ID == id);
if (worker != null)
{
return View(worker);
}
}
return NotFound();
}
То появляется следующее исключение:
The provider for the source IQueryable doesn't implement IDbAsyncQueryProvider. Only providers that implement IDbAsyncQueryProvider can be used for Entity Framework asynchronous operations.
Вот класс контекста доступа для бд:
public class EnterChatContext : DbContext
{
public EnterChatContext(DbContextOptions<EnterChatContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
public DbSet<TopicMessage> TopicMessages { get; set; }
public DbSet<Topic> Topics { get; set; }
public DbSet<Note> Notes { get; set; }
public DbSet<GroupChatMessage> GroupChatMessages { get; set; }
public DbSet<File> Files { get; set; }
public DbSet<Company> Companies { get; set; }
public DbSet<Worker> Workers { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<TopicMessage>().ToTable("TopicMessage");
modelBuilder.Entity<Topic>().ToTable("Topic");
modelBuilder.Entity<Note>().ToTable("Note");
modelBuilder.Entity<GroupChatMessage>().ToTable("GroupChatMessage");
modelBuilder.Entity<File>().ToTable("File");
modelBuilder.Entity<Company>().ToTable("Company");
modelBuilder.Entity<Worker>().ToTable("Worker");
}
}
Вот класс модели Worker
public class Worker
{
public int ID { get; set; }
public int CompanyID { get; set; }
[Required(ErrorMessage = "Пожалуйста, введите имя работника!")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Пожалуйста, введите фамилию работника!")]
public string SecondName { get; set; }
public bool Status { get; set; }
public string StringStatus
{
get
{
if (Status == true) return "Да";
else return "Нет";
}
}
[Required(ErrorMessage = "Пожалуйста, введите пригласительный код для работника!")]
public int? InviteCode { get; set; }
public Company Company { get; set; }
}
Я никак не могу найти могу найти информации по данному исключению. Я так понимаю проблема с классом контекста, нужно использовать что-то другое вместо DbSet<>...
Точно ответить не могу, но везде рекомендуют установить NuGet пакет Ссылка на англоязычный форму с таким же вопросом
Проблема заключалась в конфликте EntityFramework и EntityFrameworkCore. Асинхронные методы просто обращались не к той реализации, которой нужно. Я убрал EntityFramework из проекта и использовал директиву
using Microsoft.EntityFrameworkCore;
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется nullable переменная, к которой требуется доступ из разных потоковНапример, int?
Есть один сетевой адаптер, мне нужно узнать его локальный IPv6, для отправки запросов с сокета (сокет в режиме DualMode) через этот IP
Мне необходимо отправить ответ клиенту после подключении 1 байтКлиент подключается, по мануалу, после подключения, я должен отправить ответ...
Нужно с помощью C# авторизоваться на сайте и внести изменения на нёмВ моём случае, сайт — настройки майнинг машины