【发布时间】:2020-10-21 14:34:57
【问题描述】:
来自 Java 环境,我遇到了一些关于可继承 DBContext 类的问题。我曾经使用 Java EE:
- 设置一个或多个数据库上下文(如果受影响的独立实体集群);
- 将上下文添加到通过 DI 处理查询执行的各个 DataAccessor 类中;
现在使用 EF Core,我看到的几乎所有示例都通过调用默认构造函数来创建 MyDBContext 的实例:
using (var db = new myContext()){...}
这向我提出了几个问题:
- 使用此方法,调用构造函数的每个 DataAccessor 类都有自己的 Context 实例。只 ave 一个并在需要时使用 DI 注入不是更好吗?
- 如果我没有重载
OnConfiguring(...)来传递选项,而是使用AddDbContext作为Startup.cs中的服务,我该如何调用构造函数?现在,带有选项的重载构造函数期望在每次调用构造函数时传递它们。 - 每个应用程序/Db 拥有多个 DBContexts 甚至是使用 EF Core 的好习惯吗?
【问题讨论】:
-
DbContext 是一个工作单元。它收集所有更改并仅在调用
SaveChanges时保存它们。这就是为什么所有示例和教程都使用using,你也应该这样做。 -
至于配置,示例展示了如何从外部进行配置,如何传递选项,或者如果你使用.NET Core DI,如何使用@ 987654327@ 带有构建器操作