我正在使用.NET Core依赖注入(inject)在应用程序启动期间实例化SqlConnection
对象,然后计划将其注入(inject)到存储库中。 Dapper将使用此SqlConnection
从我的存储库实现中的数据库读取/写入数据。我将在Dapper中使用async
调用。
问题是:我应该将SqlConnection
作为 transient 还是作为单例注入(inject)?考虑到我想使用async
的事实,我的想法是使用 transient ,除非Dapper在内部实现一些隔离容器,并且我的单例的范围仍将包装在Dapper内部使用的任何范围内。
使用Dapper时,是否有关于SqlConnection对象生存期的任何建议/最佳实践?我可能会缺少任何警告吗?
提前致谢。
最佳答案
如果您以单例方式提供SQL连接,则除非启用MARS,否则将无法同时处理多个请求,这也有其局限性。最佳实践是使用临时SQL连接并确保正确处理它。
在我的应用程序中,我将自定义IDbConnectionFactory
传递到存储库,该存储库用于在using
语句内创建连接。在这种情况下,存储库本身可以是单例的,以减少堆上的分配。
关于c# - 具有.NET Core的Dapper-注入(inject)的SqlConnection生存期/范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42937942/