1

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

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

情景一:

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

场景 B:

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

4

1 回答 1

1

来自官方文档:


你应该什么时候处理?

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

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


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

希望它可以帮助某人。

于 2013-04-25T00:27:37.640 回答