一般的にデータの整合性を保つために使われるのがトランザクションである
整合性とは、矛盾がなく一貫性があることを指す
ApplicationServiceは整合性を破綻させる問題が孕んでいる。
すると、永続化が完了していないため、重複チェックをすり抜けてしまう
この問題を解決するために、、、
ユニークキー制約とは、DBの特定のカラムがユニーク、唯一無二であることを保証する機能
これを使えば、名前の重複を探知することができる。
しかし、この機能を使ってしまうと、ユーザを重複させてはいけないという意図をコードから汲み取ることができなくなってしまう。
トランザクションスコープを使用すると、コードブロックがトランザクションに参加しているものとして簡単にマークすることができ、トランザクション自体と対話する必要がありません。 トランザクションスコープは、アンビエントトランザクションを自動的に選択して管理することができます。
トランザクションについては別機会に超詳しく調べる予定。