【发布时间】:2018-09-07 14:17:54
【问题描述】:
给定:
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 上打开了一个 issue,因为据我所知,这似乎是一个错误。
【问题讨论】:
标签: ef-core-2.1