C#C
C#3y ago
Connor

❔ Unsupported method exception, how do I fix it?

[ApiController]
[Route($"api/[controller]")]
public class CompanyController : ControllerBase
{
    private ApplicationDbContext _dbContext;
    public CompanyController(ApplicationDbContext dbContext)
    {
        _dbContext = dbContext;
    }
    [HttpPost("{id}")]
    public async Task<ActionResult<TItem>> Get(string id, [FromBody] string[] includes)
    {
        var result = await _dbContext.Set<Company>()
            .Include(x => x.Locations) // THIS CAUSES ERROR
            .Where(x => x.Id == id)
            .AsNoTracking()
            .FirstOrDefaultAsync();
        if (result == null)
        {
            return BadRequest(nameof(TItem) + "Id does not exist");
        }
        return Ok(result);
    }
}


[Test]
public async Task GetTest()
{
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
                .UseInMemoryDatabase(databaseName: "TestDb")
                .Options;
            var operationalStoreOptions = Options.Create(new OperationalStoreOptions());

            var mockDbContext = new Mock<ApplicationDbContext>(options, operationalStoreOptions);
            var mockDbSet = new Mock<DbSet<Company>>();
            mockDbContext.Setup(x => x.Set<Company>()).Returns(mockDbSet.Object);
            var companyController= new CompanyController(mockDbContext.Object);
            var id = "123";
            var includes = new string[] { "Locations" };

            // Act
            var result = await companyController.Get(id, includes);

            // Assert
            Assert.IsInstanceOf<OkObjectResult>(result);
}
But I get this error
System.NotSupportedException : Specified method is not supported.
   at Microsoft.EntityFrameworkCore.DbSet`1.System.Linq.IQueryable.get_Provider()
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.Include[TEntity](IQueryable`1 source, String navigationPropertyPath)
Was this page helpful?