FluentData IDbContext的寿命

时间:2012-12-03 23:30:48

标签: orm fluentdata

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

IDbContext的正常生命周期是什么?每次执行对数据库的新查询时,是否应该实例化新的数据库上下文?我有两个场景,这是正确的用法?请注意,我正在查询MS SQL以及MySQL服务器。所以,我想知道是否有任何影响到达最大连接。是的,我在多线程上调用数据库。两个场景都是线程安全的吗?

情景A:

我的存储库类实现了IDisposable并保存了一个IDbContext类型的私有变量。此变量在构造函数中实例化,并在处理类时进行处理。存储库中只有一个上下文实例。

情景B:

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

1 个答案:

答案 0 :(得分:1)

来自官方文件:


什么时候应该处理?

  • 如果您启用了UseTransaction,则必须处理DbContext UseSharedConnection。
  • 如果您启用了UseMultiResult(或MultiResultSql),则必须处理DbCommand。
  • 如果您启用了UseMultiResult,则必须处理StoredProcedureBuilder。

在所有其他情况下,处理将由FluentData自动处理。这意味着数据库连接在执行查询之前打开,并在执行完成后立即关闭。


http://fluentdata.codeplex.com/documentation#Dispose

希望它有所帮助。