Orm FluentData IDbContext的生命周期

Orm FluentData IDbContext的生命周期,orm,fluentdata,Orm,Fluentdata,我正在数据访问层中使用FluentData ORM for.NET。然而,这个问题可能适用于大多数ORM 环境的适当寿命是多少?是否应该在每次执行对数据库的新查询时实例化新的数据库上下文?下面我有两个场景,哪一个是正确的用法?请注意,我正在查询MS SQL和MySQL服务器。因此,我想知道,就达到最大连接而言,两者是否有任何影响。是的,我正在多线程上调用数据库。这两种方案都是线程安全的吗 情景A: MyRepository类实现IDisposable并保存IDbContext类型的私有变量。此变

我正在数据访问层中使用FluentData ORM for.NET。然而,这个问题可能适用于大多数ORM

环境的适当寿命是多少?是否应该在每次执行对数据库的新查询时实例化新的数据库上下文?下面我有两个场景,哪一个是正确的用法?请注意,我正在查询MS SQL和MySQL服务器。因此,我想知道,就达到最大连接而言,两者是否有任何影响。是的,我正在多线程上调用数据库。这两种方案都是线程安全的吗

情景A:

MyRepository类实现IDisposable并保存IDbContext类型的私有变量。此变量在构造函数中实例化,并在释放类时释放。存储库中只有一个上下文实例

情景B:


我的存储库类有一个私有方法,该方法返回IDbContext的新实例。每当其他方法调用数据库时,它们都会调用此方法以获取新的数据库上下文。

来自官方文档:


您应该在何时处置?

  • 如果启用了UseTransaction或 使用共享连接
  • 如果启用了UseMultiResult(或MultiResultSql),则必须释放DbCommand
  • 如果启用了UseMultiResult,则必须释放StoredProcedureBuilder
在所有其他情况下,dispose将由FluentData自动处理。这意味着数据库连接在执行查询之前打开,在执行完成之后关闭



希望它能帮助别人。

来自官方文档:


您应该在何时处置?

  • 如果启用了UseTransaction或 使用共享连接
  • 如果启用了UseMultiResult(或MultiResultSql),则必须释放DbCommand
  • 如果启用了UseMultiResult,则必须释放StoredProcedureBuilder
在所有其他情况下,dispose将由FluentData自动处理。这意味着数据库连接在执行查询之前打开,在执行完成之后关闭


希望它能帮助别人