如何在一个 Razor 页面中访问 2 个 DBContext

Tho*_*mas 0 entity-framework razor entity-framework-6 asp.net-core razor-pages

在我的 Razor 页面中,我想使用连接到不同数据库的第二个 DBContext。

我有两个 DBContext 连接到两个不同的数据库,它们在同一个应用程序中独立工作正常。DB1 连接到在 Linux 机器上运行的 MS Sql Server,这是主数据库。DB2 连接到 Windows Server 2016 上的 MS Sql Server。我可以为 DB1 中的表创建 CRUD,并且所有功能都正常工作,我可以为 DB2 中的视图创建读取,并且按预期检索数据。在 DB1 中创建新记录时,我想合并 DB2 中的数据。如何在为 DB1 的 DBContext 创建的 Razor 页面 CRUD 中创建/访问 DB2 的 DBContext。我希望这是有道理的。在过去的几天里,我疯狂地尝试谷歌搜索,但未能找到解决方案。

Tho*_*mas 5

BattlFrog - 感谢您的回复。这并不完全是我想要的,但它确实让我走上了更好的 Google 路径。我如何解决我的问题是通过使用“依赖注入”。我只是将第二个 DBContext 添加到 PageModel 的构造函数中。然后在我的 OnPostAsync() 中我只需引用 DBContext。这对我有用,但由于我只学习 C#、ASP.Net Core 和 Razor Pages,这可能不是最好的方法。如果我错了,请纠正我。

    public class IndexModel : PageModel
    {
        DBContext1 _context1;
        DBContext2 _context2;

        public IndexModel(DBContext1 context1, DBContext2 context2)
        {
            _context1 = context1;
            _context2 = context2;
        }

        public async Task<IActionResult> OnPostAsync()
        {
            IList<ClassName> listName = await _context2.ObjectName.ToListAsync();
            // do some stuff here
            await _context1.SaveChangesAsync();
        }
    }
Run Code Online (Sandbox Code Playgroud)