在 Web API 中添加多个 DbContext 时,.NET Core 的 DBSet 可能会返回 null。
解决这个问题的方法是,确保在每个 DbContext 的构造函数中正确初始化对应的 DBSet。每个 DbContext 都应该有自己的 DbSet 属性,以反映其对应的数据表。
例如,假设我们有两个 DbContext 类:DbContext1 和 DbContext2。我们需要在 Web API 中使用它们。
首先,在 DbContext1 中添加一个 DbSet 属性,用于映射数据表1:
public class DbContext1 : DbContext
{
public DbSet<Table1> Table1Items { get; set; }
public DbContext1(DbContextOptions<DbContext1> options) : base(options)
{
}
}
然后,在 DbContext2 中添加一个 DbSet 属性,用于映射数据表2:
public class DbContext2 : DbContext
{
public DbSet<Table2> Table2Items { get; set; }
public DbContext2(DbContextOptions<DbContext2> options) : base(options)
{
}
}
接下来,在 Web API 的 Startup.cs 中配置 DbContext:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddDbContext<DbContext1>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DbContext1Connection")));
services.AddDbContext<DbContext2>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DbContext2Connection")));
// ...
}
最后,在需要使用 DbContext 的控制器或服务中,通过构造函数注入所需的 DbContext:
public class MyController : ControllerBase
{
private readonly DbContext1 _dbContext1;
private readonly DbContext2 _dbContext2;
public MyController(DbContext1 dbContext1, DbContext2 dbContext2)
{
_dbContext1 = dbContext1;
_dbContext2 = dbContext2;
}
// ...
}
通过以上步骤,我们可以在 Web API 中添加多个 DbContext,并确保每个 DbContext 的 DbSet 正确返回对应的数据表。如果仍然出现 DBSet 返回 null 的问题,可能是数据表或实体类的定义有误,请检查数据库和实体类定义是否正确匹配。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云