❔ 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);
}[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);
}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)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)