Дано:
public class MyClass
{
public MyClass(ApplicationDbContext db)
{
var query = db.Query<IdentityUser>();
}
}
Используя ASP.NET Core 2.1, я получаю это исключение при вызове db.Query<IdentityUser>()
:
System.InvalidCastException: 'Unable to cast object of type 'Microsoft.EntityFrameworkCore.Internal.InternalDbSet\`1[Microsoft.AspNetCore.Identity.IdentityUser]' to type 'Microsoft.EntityFrameworkCore.DbQuery\`1[Microsoft.AspNetCore.Identity.IdentityUser]'.'
Я столкнулся с этим со своими собственными сущностями и воспроизвел его с минимальным кодом, используя консервированные ApplicationDbContext
/ IdentityUser
. Это ошибка в .NET Core 2.1 или я что-то делаю неправильно?
Это исходный код github для DbContext.Query<T>()
:
public virtual DbQuery<TQuery> Query<TQuery>()
where TQuery : class
=> (DbQuery<TQuery>)((IDbQueryCache)this)
.GetOrAddQuery(DbContextDependencies.QuerySource, typeof(TQuery));
По-видимому, выбрасывает исключение ((IDbQueryCache)this).GetOrAddQuery(DbContextDependencies.QuerySource, typeof(TQuery))
на (DbQuery<TQuery>)
Я открыл проблему на github, так как это похоже на ошибку из того, что я могу сказать.