c# - 使用多个上下文 .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:对象引用未设置为对象的实例。
什么是解决方案以及更定期处理上下文并且不影响内存或性能的最佳方法是什么
解决方案
您可以在数据库中使用同义词。您可以Dalel
在_context
数据库中创建表的同义词,或者您可以在中创建M_Branch
同义词_Erp_Context
,以更有意义的为准。然后您就可以将这些同义词表添加到您在 EF 中的上下文中。
这篇文章展示了一个使用 EF 同义词的示例:Entity Framework Code First with SQL Server Synonyms
推荐阅读
- linux - 最近 2 天内修改的 tar 文件
- sql-server - SQL SERVER:带输出的存储过程
- docker - 可以使用 docker:18 构建 docker 映像并使用不同的 docker:19 加载映像吗?
- elixir - Elixir和字符串中的多个替换字符
- android - 找不到脚手架小部件:打开底部对话框表时出现异常
- php - 以索引命名的交叉引用数组元素 - PHP/Laravel/Lumen
- c++ - C ++,Qt:双击后仅编辑qtablewidgetitem
- prism - Prism WPF Ioc 如何解决 MainWindow
- javascript - Mongoose 创建新文档重复键的可能性?
- java - 如何检查 XML 中是否存在任何 DTD\DOCTYPE 声明?