質問: 私のアプリケーションは、dapperとASP.NETコア2プレビュー2を備えたSQL Serverを使用しています。単一のデータベースでリポジトリパターンを使用しています。各エンティティのリポジトリを作成しました。ビジネスレイヤーでは、トランザクションスコープ内の個別の接続オブジェクトを使用して、各リポジトリに注入します。このパターンは分散トランザクションですか?または、SQL Serverはローカルトランザクションとして扱いますか。 .NETコアは分散トランザクションをサポートしていないためですか?または、これの代わりに.NETフレームワークを使用できますか?
回答: これは分散トランザクションであり、.NET Coreが許しても、それは悪い習慣です。 代わりに、両方のリポジトリに対して単一のSqlConnectionを挿入し、SqlConnectionでトランザクションを管理します。 TransactionScopeまたはEFがない場合は、SqlConnectionに明示的にTSQL BEGIN TRANSACTION / COMMITを使用する必要があります。それ以外の場合は、SqlCommandを明示的に登録する必要があります。