引用上述链接中 Martin Fowler 的话,“工作单元将持续跟踪在可能影响数据库的业务事务中执行的所有操作。 当你完成操作后,它将找出更改数据库作为工作结果时需要执行的所有操作。”使用 Entity Framework Core (EF Core) 时的典型工作单元包括:
2. ASP.NET Core 注入中的 DbContext
- 使用后释放 DbContext 非常重要。 这可确保释放所有非托管资源,并注销任何事件或其他挂钩,以防止在实例保持引用时出现内存泄漏。
- DbContext 不是线程安全的。 不要在线程之间共享上下文。 请确保在继续使用上下文实例之前,等待所有异步调用。
- EF Core 代码引发的 InvalidOperationException 可以使上下文进入不可恢复的状态。 此类异常指示程序错误,并且不旨在从其中恢复。
EF Core 内存中数据库不是为生产用途设计的。 此外,它可能不是测试的最佳选择。 有关详细信息,请参阅使用 EF Core 的测试代码。
同一数据库提供程序用于 SQL Server 和 Azure SQL。 但是,建议在连接到 SQL Azure 时使用连接复原。
你的 DbContext 不需要密封,但对于没有被设计为继承的类,密封是最佳做法。但是,如果 DbContext 子类型本身旨在继承,则它应公开采用非泛型 DbContextOptions 的受保护构造函数。 例如:
在同一个上下文,一个异步操作还没完成,另一个操作就开始了。。 这通常是由使用同一个 DbContext 实例的不同线程引起的,但不保证实例成员是线程安全的。检测不到并发访问时,可能会导致未定义的行为、应用程序崩溃和数据损坏。
EF Core 6.0 引入无需依赖关系注入的池。若要在不使用依赖项注入的情况下使用上下文池,请 PooledDbContextFactory 初始化 并从中请求上下文实例:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |