首页 > 解决方案 > 使用多个上下文 .Net 核心

问题描述

我的项目依赖于 2 个不同项目中的 2 个不同的数据库,我想在 2 个表之间建立连接,这是我使用的 API 代码

            var mBranch = (from Branch in _context.M_Branch.Where(p => p.BrnchNo == id)
                       join Dalel in _Erp_Context.Dalel on Branch.BrnchDebit equals Dalel.DalelNo into bt
                           from tt in bt.DefaultIfEmpty()
                           select new M_Branch
                           {
                               BrnchNo = Branch.BrnchNo,
                               BrnchCredit = Branch.BrnchCredit,
                               BrnchDalelDebit = tt.DalelDesc,
                               BrnchDebit = Branch.BrnchDebit,
                               BrnchDalelCredit = tt.DalelDesc,
                               BrnchDesc = Branch.BrnchDesc,
                               BrnchNotice = Branch.BrnchNotice,
                               BrnchUserNo = Branch.BrnchUserNo
                           }).FirstOrDefault();

但它说我不能使用 2 个不同的 DB 上下文,所以我最终得到了这个解决方案,我发现 EntityFramework 上下文跨多个项目或连接两个上下文

但它总是让我这个错误

System.NullReferenceException:对象引用未设置为对象的实例。

什么是解决方案以及更定期处理上下文并且不影响内存或性能的最佳方法是什么

标签: c#asp.net-core.net-core

解决方案


您可以在数据库中使用同义词。您可以Dalel_context数据库中创建表的同义词,或者您可以在中创建M_Branch同义词_Erp_Context,以更有意义的为准。然后您就可以将这些同义词表添加到您在 EF 中的上下文中。

这篇文章展示了一个使用 EF 同义词的示例:Entity Framework Code First with SQL Server Synonyms


推荐阅读