Запросы DbSet зависает / терпит неудачу - PullRequest
0 голосов
/ 02 марта 2020

У меня работает WebApi. NET Core 3.0, EF Core 3.0 и использование MediatR. Два из его доменов - Food и FoodType с соответствующими им DataSet с отношением 1: 1. Выполнение приведенной ниже строки кода зависает / не срабатывает (я не уверен, что именно происходит, но оно переходит к строке return кода). Обратите внимание, что запрос набора данных Foods работает просто отлично. Также обратите внимание, что в таблице FoodTypes есть записи.

public async Task<Unit> Handle(CreateFoodType request, CancellationToken cancellationToken)
{
     var foodType = await _context.FoodTypes.FirstOrDefaultAsync(type => type.Id == request.FoodTypeId);
     if (foodType == null)
          throw new Exception();

     //...bla bla bla

     return new Unit();
}

Ниже приведен фрагмент кода / конфигурации. Мы будем благодарны за любую помощь.

public class Food
{
     public Guid Id { get; set; }
     public int AverageWeight { get; set; }
     //...

     public virtual int FoodTypeId { get; set; }
     public virtual FoodType FoodType { get; set; }
}
public class FoodType
{
     public int Id { get; set; }
     public string Name { get; set; }

     public virtual Food Food { get; set; }
}

... и класс DBContext

public class DataContext : DbContext
{
     public DbSet<Food> Foods { get; set; }
     public DbSet<FoodType> FoodTypes { get; set; }

     public DataContext(DbContextOptions<DataContext> options) : base(options) { }

     protected override void OnModelCreating(ModelBuilder modelBuilder)
     {
         base.OnModelCreating(modelBuilder);

         modelBuilder.Entity<Food>()
            .HasOne(f => f.FoodType)
            .WithOne(ft => ft.Food)
            .HasForeignKey<Food>(f => f.FoodTypeId);
      }
}

Редактирование: добавление трассировки стека исключений:

   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(Boolean errorsExpected, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(Boolean errorsExpected, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenAsync(CancellationToken cancellationToken, Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor.AsyncQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.FirstOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.FirstOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Features.Foods.CreateFoodCommand.CreateRequestHandler.Handle(CreateFoodCommand request, CancellationToken cancellationToken) in [...redacted]
...