扩展DbContext以避免代码重复

时间:2018-11-23 13:57:14

标签: c# entity-framework-core

我有一个包含多个DbContext类的项目:每个域一个。由于EF Core并不完美,因此我必须向每个DbContext添加一些功能,例如允许它处理SQL Server 2017的新JSON功能。我也添加了其他功能,但是为了简洁起见,我删除了它来自示例。

要将此JSON功能添加到每个DbContext中,我使用BaseDbContext,它是一个简单地扩展DbContext的抽象类。该功能的先决条件之一是拦截发送到数据库的SQL查询。为此,我使用了here中描述的策略。

在接下来的几周中,我们将进入不同的开发环境,我想通过“选项”模式根据当前环境注入正确的连接字符串。这在拦截策略中效果不佳。由于执行了拦截<String>,因此实际上会在继续SomeDbContext的构造函数之前触发OnConfiguring函数,这意味着我的选项永远不会填满,从而导致NullReferenceException。

如何在不触发OnConfiguring的情况下扩展DbContext,同时避免代码重复?我也可以运行自定义的EF Core,但我想尽可能避免这种情况。

GetService<DiagnosticSource>()

0 个答案:

没有答案