在将 EF Core rc 1 替换为 EF Core rc 2 final 后,当调用下面的 GetService() 方法时会出现无效操作异常。目标是从任何给定的 DbSet 中获取相应的 DbContext:
异常完整信息:
public static ObservableCollection<TEntity> Local<TEntity>(this DbSet<TEntity> set)
where TEntity : class
{
var context = set.GetService<DbContext>();
...
}
异常完整信息:
我们在 OnConfiguring 中有效地设置了数据库提供程序:此 DbContext 没有配置数据库提供程序。可以通过重写 DbContext.OnConfiguring 方法或使用应用程序服务提供程序上的 AddDbContext 来配置提供程序。如果使用 AddDbContext,则还要确保您的 DbContext 类型在其构造函数中接受 DbContextOptions 对象,并将其传递给 DbContext 的基础构造函数。
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
base.OnConfiguring(builder);
var connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder.UserID = "MyUserID";
...
builder.UseSqlServer(connStringBuilder.ConnectionString);
}
所以看起来问题出在GetService()方法没有为给定的DbSet解析正确的DbContext实例吗?