首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Web API中添加多个dbcontext时。Net核心所有DBSet返回null

在 Web API 中添加多个 DbContext 时,.NET Core 的 DBSet 可能会返回 null。

解决这个问题的方法是,确保在每个 DbContext 的构造函数中正确初始化对应的 DBSet。每个 DbContext 都应该有自己的 DbSet 属性,以反映其对应的数据表。

例如,假设我们有两个 DbContext 类:DbContext1 和 DbContext2。我们需要在 Web API 中使用它们。

首先,在 DbContext1 中添加一个 DbSet 属性,用于映射数据表1:

代码语言:txt
复制
public class DbContext1 : DbContext
{
    public DbSet<Table1> Table1Items { get; set; }

    public DbContext1(DbContextOptions<DbContext1> options) : base(options)
    {
    }
}

然后,在 DbContext2 中添加一个 DbSet 属性,用于映射数据表2:

代码语言:txt
复制
public class DbContext2 : DbContext
{
    public DbSet<Table2> Table2Items { get; set; }

    public DbContext2(DbContextOptions<DbContext2> options) : base(options)
    {
    }
}

接下来,在 Web API 的 Startup.cs 中配置 DbContext:

代码语言:txt
复制
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:

代码语言:txt
复制
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 的问题,可能是数据表或实体类的定义有误,请检查数据库和实体类定义是否正确匹配。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库 TencentDB:https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务 Tencent Kubernetes Engine(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云音视频处理 VOD:https://cloud.tencent.com/product/vod
  • 腾讯云人工智能平台 AI:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台 IoT Hub:https://cloud.tencent.com/product/iothub
  • 腾讯云移动应用开发:https://cloud.tencent.com/product/mad
  • 腾讯云对象存储 COS:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务 BaaS:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/uv
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET 6 使用工作单元操作 MongoDB

MongoDB,所谓的事务主要指的是多个文档的事务,其使用方式和传统关系型数据库差不多。但我们需要注意的是:多文档事务只能应用在副本集 或 mongos 节点上。...NET应用中进行事务 下面展示了.NET应用通过MongoDB Driver来进行事务的示例: using (var clientSession = mongoClient.StartSession...appsettings配置MongoDB的连接信息: "MongoDatabaseConfigs": { "Servers": "xxx01.edisontalk.net,xxx02.edisontalk.net...操作事务,重点介绍了EDT.MongoProxy这个小组件的设计,让我们可以ASP.NET 6应用通过数据仓储(Repository)和工作单元(UnitOfWork)的模式来快速方便地操作MongoDB...参考代码 本文代码并未提供所有的,如需查看,请至下面的代码仓库查看,也可以点个赞给点鼓励。

32610
  • 【源码解读(一)】EFCORE源码解读之创建DBContext查询拦截

    ,不如说是没有一个好的方向;然后昨天群里有一个朋友再说,EfCore的拦截器如何注入Web的服务,以及EfCore如何自定义查询,我就看了一下EfCore的源码,在此之前我针对asp.net web...二:DbContext的构造函数里面做了那些事情。     三:如何在EfCore的服务获取到Web注入的服务的方式之一。     四:拦截查询的几种方式。     ...,Ef也会注入一遍,重复注入,Program.cs里面我们先注入一个返回IServiceCollection的Func,这样DBContext可以获取到这个 传到ServiceExtension里面...接下来扩展添加进去之后,我们运行程序,获取一个DBContext,然后就会走到这里添加我们的扩展,从而注入我们注入的IWebGetName,就可以EF的IOC获取我们web注入服务。...,我们一共讲了AddDbContext做了什么,DBContext的构造函数又做了那些事情,写了不托管EF的ioc到WEB的ioc的场景下如果注入服务到EF的ioc,以及如何拦截增删改查的方式,提升查询性能的方式

    80020

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记

    UnitOfWork 工作单元 一个工作单元一个事务范围内保留所有对数据库的变更,在这个工作单元结束的时候一次性提交所有改动到数据库 DB Context 与 DB Set DB Context(UnitOfWork...web api 项目 添加 Pomelo.EntityFrameworkCore.Mysql 的 nuget 包引用 创建实体 创建 DbContext 配置连接字符串并且注入 DbContext 使用...完成数据查询与插入 初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且startup.cs添加DbContext的注入 // 安装dotnet tool ef工具 dotnet tool...install --global dotnet-ef // 以下命令需要在api项目的目录下执行 // 项目内安装 dotnet add package Microsoft.EntityFrameworkCore.Design...Postman 添加环境变量 ?

    81810

    【源码解读(二)】EFCORE源码解读之查询都做了什么以及如何自定义批量插入

    ,托管IOC到web程序,在上一文章,最后关于DBContext的构造函数的内容没有讲完,本章我会讲以下几部分,会将上篇没有讲完的部分讲完,会讲关于一条查询语句普普通通的一生,如何自定义批量增删改查的方式...的服务,调用了InitializeSets方法,顾名思义,这个方法其实就是去加载我们的DBSet的,以下是这个接口的实现,从下面的源码,我们不难看出,这里就是通过IDbSetFinder去查找DBContext...里面去了,这样就创建了DBContext里面的所有DbSet的Set方法,,但是呢这里是只给构建了DBSet的Set方法,但是还没有调用,相当于此时的DBSet还是null,所以还要继续看DbSetInitializer...,这个对象继承了DBSet,所以我们的所有DBSet,其实都是InternalDbSet,在下面的代码,我们可以看到,最终都是返回了一个这个。...,然后循环添加,这里只是一个简单的例子,感兴趣的朋友,可以自己去进行扩展,AddRange,还有UpdateRange等批量操作的都会进去到这里,commandBatches是我们所有需要进行批量操作的记录

    36050

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    (3)Web API 2 API Controller Scaffolders 有几个模版向项目中添加一个继承自基类ApiController的控制器。...该派生类具有一个或多个DbSet类型的属性,类型DbSet的每一个T代表一个想要持久保存的对象。...显式的为代码优先数据上下文配置连接很简单,即向web.config文件添加一个连接字符串。 ?...复杂模型绑定:ASP.NET MVC,可以通过DefaultModelBinder类将form数据对应到复杂的.NET类,即模型。该模型可能是一个List类或一个含有多个属性的自定义类。...ASP.NET MVC可以通过使用Bind属性限制可被更新的Model属性。如绑定多个字段的部分字段:通过Bind属性来定义Model需要绑定哪些字段。

    4.8K40

    Entity Framework——读写分离

    1 实现 CustomDbContext扩展了DbContext,其构造函数带有形式参nameOrConnectionString,可以使用CustomDbContext指定数据库连接字符串。...获得web.config配置文件的连接名称 使用静态私钥变量allSlaves来表示从库集合,这样做的好处是:静态私有变量只使用前初始化一次,当第一次被allSlaves使用时初始化一次,即调用GetAllSlaves...has been disposed.其原因就在于使用DbContext,慎重使用单例模式,全局的DbContext会引起第二次调用出错,即第一次调用后DbContext资源即被释放。...类似于单例模式的实现,即全局的DbContext,也是不可取的。 基于上述考虑设计实现SlaveDbContext,每次被调用时,都会返回一个新的实例。...多从库随机选择 当配置了多个从库,应随机从从库集合中选择一个。于是使用伪随机数生成器Random。

    1.1K100

    【初学者指南】ASP.NET MVC 5创建GridView

    介绍 在这篇文章,我们将会学习如何在 ASP.NET MVC 创建一个 gridview,就像 ASP.NET Web 表单的 gridview 一样。...从对话框跳转到 Web,选择 ASP.NET Web 应用程序项目,然后单击确定。 ? 模板中选择 MVC,如果编写了应用的单元测试,请先做检查,并点击 OK。 我们的工程都是用基本的功能创建的。...现在,控制器文件夹添加一个空的名为 AssetController 的控制器,这个控制器件将用于所有 Asset 的相关工作。...检索行为,我们将简单地获取该表所有行,并将其传递给 view: public ActionResult Index() { return View(DbContext.Assets.ToList...通过本文的介绍,希望大家能够掌握 ASP.NET MVC 5 创建 GridView 的方法。

    6.2K90

    CSharpEntityFramework与CodeFirst实践

    正如生成的DbContext所说:“为您要在模型包含的每种实体类型都添加 DbSet。”...,我们该类添加如下的DbSet属性,并将注释删除,更加直观的看一看当前的结构: public class BookDbDemo : DbContext { public BookDbDemo...换句话说,继承了DbContext的类就对应了某一个数据库,其连接属性由配置文件的连接配置决定,并在DbContext设置进去(基类构造函数设置),这个DbContext所有DbSet就对应到数据库的表...安装目录下所有的类库都拷到bin目录而不在应用环境上安装mysql-connector-net驱动程序,EF代码还是会报错,因为mysql-connector-net安装不仅装了各种dll类库,还在机器上...之后我们再次使用update-database命令将变更更新到数据库,得到当前的数据库内容: 此时我们将book表填充一些数据: 然后,我们将DbContextDbSet属性删除,再次进行迁移

    27310

    【ASP.NET Core 基础知识】--Web API--创建和配置Web API(二)

    类: 创建一个派生自DbContext的类,表示数据库上下文,并在该类声明DbSet属性以表示每个数据模型。...以下是 Web API 读取资源的步骤: 控制器添加用于读取资源的 API 端点。通过接收 GET 请求,从数据库获取资源,并将其返回给客户端。...2.3 更新资源 ASP.NET Core Web API 中使用 Entity Framework Core(EF Core)更新资源的过程通常包括以下步骤: 控制器添加用于更新资源的 API...2.4 删除资源 ASP.NET Core Web API,使用Entity Framework Core(EF Core)实现删除资源的过程通常包括以下步骤: 控制器添加用于删除资源的API...三、添加身份验证与授权 ASP.NET Core Web API添加身份验证与授权是确保API端点仅对经过身份验证和已授权的用户可用的重要步骤。

    21100

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记

    ,像一个内存级别的领域对象集合 为领域业务的单元测试提供替换点 集中数据库访问逻辑 24.jpg UnitOfWork 工作单元 一个工作单元一个事务范围内保留所有对数据库的变更,在这个工作单元结束的时候一次性提交所有改动到数据库...Set 组合完成数据查询和更新操作的 ORM 框架 EF Core快速开始示例 创建一个空的 web api 项目 添加 Pomelo.EntityFrameworkCore.Mysql 的 nuget...完成数据查询与插入 初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且startup.cs添加DbContext的注入 // 安装dotnet tool ef工具 dotnet tool...install --global dotnet-ef // 以下命令需要在api项目的目录下执行 // 项目内安装 dotnet add package Microsoft.EntityFrameworkCore.Design...Postman 添加环境变量 25.jpg 启动项目,访问新增,列表接口 26.jpg 27.jpg GitHub源码链接: https://github.com/MINGSON666/Personal-Learning-Library

    94711

    .NET 5.NET Core使用EF Core 5连接MySQL数据库写入读取数据示例教程

    本文首发于《.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程》 前言 .NET Core/.NET 5的应用程序开发...本文将为大家分享的是.NET Core/.NET 5应用程序中使用EF Core 5连接MySQL数据库的方法和示例。...创建示例项目 使用Visual Studio 2019(当然,如果你喜欢使用VS Code也是没有问题的,笔者还是更喜欢Visual Studio编辑器编写.NET代码)创建一个基于.NET 5的Web...请注意Pomelo.EntityFrameworkCore.MySql包的版本,安装包请开启包含预览,如: ?...); } } } } 访问地址:http://localhost:8166/api/people/create 来向MySQL数据库写入测试数据,返回结果为

    7.9K42

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    ASP.NET Core 配置系统非常灵活,并且可以将连接字符串存储 appsettings.json 、环境变量、用户密钥存储或其他配置源 appsettings.json { "ConnectionStrings...异步操作对于丰富的客户端应用程序中保持响应式 UI 非常重要,并且还可以增加 web 应用程序的吞吐量,在这些应用程序,它们可释放线程以处理 web 应用程序的其他请求 var blog = new...请求处理完成后,实例的任何状态都将被重置,并且实例本身会返回池中。 避免维护状态的应用程序中使用上下文池。 例如,不应在请求之间共享的上下文中的私有字段。...将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。 除高度优化的方案外,池的性能提升通常可以忽略不计。...tabs=data-annotations 模型包含类型 class MyContext : DbContext { // 对应一张表(推荐) public DbSet

    75811

    Entity Framework Core 2.0 新特性

    ef core 2.0 ,我们将自定义的DbContext类型注册到DbContextPool服务,可让该数据库上下文类型的实例重复使用。...的实例,首先会检查是否DbContextPool存在该类型的实例,当一次请求结束后,任何状态的DbContext实例都会被重置,且将自身加入到DbContextPool。   ...这在概念上类似于ADO.NET提供的数据库连接池,旨在节省一些DbContext实例初始化的成本。...以前的ef版本,调用查询api,可以通过自动编译并缓存编译的结果达到一次计算多次调用,有效的提高了ef的性能,显示编译查询(Explicitly compiled queries)这种机制可以绕过缓存查找的性能消耗...包含定义导航的实体是所有者。当查询所有,默认将包含所属的类型。   按照惯例,将为所属类型创建一个影子主键,它将通过使用表拆分映射到与所有者相同的表。

    1.9K50
    领券