更新:返信後にこれ(unit-of-work-pattern-in-net)を見ました。
多分 System.Transactions.Transaction はあなたが求めているものです。
Unit-of-Workは、数年前にメインフレーム ベースのアプリケーションに最初に適用された用語です。アプリは一連の手順を実行します。いずれかのステップが失敗した場合、データベースは前の「同期点」にロールバックされます。アプリは、作業単位のすべてのステップを正常に完了すると、新しい同期点を記録します。ステップはユニットのように振る舞いました。
メタファが進化して、.NET では Transaction コンストラクトができました。トランザクションのスコープ内の回復可能なデータ ストアで実行される作業は、ACID プロパティを使用して 1 つの単位として実行されます。これらのデータ ストアの例としては、最新の RDBMS、MSMQ などのキュー システム、Windows のファイル システムまたはレジストリ (KTM 経由) などがあります。トランザクションが解決されると、すべてのトランザクション ストアに対するすべての操作がコミットまたはロールバックされます。
nHibernate や ISession コンストラクトについては知りません。しかし、伝統的な意味で「作業単位」という用語を使用している場合、必要なのはトランザクションだと思います。
トランザクションを ASP.NET MVC に統合することについては、それが何を意味するのかわかりません。トランザクションは、UI モデルが何であるか、または UI フロー コントロールをどのように設計したかを気にしません。データベース(「モデル」だと思います)を更新する場合、その更新をトランザクションに含めるオプションがあります。単一のトランザクションの一部として複数の更新がある場合にのみ、本当に意味があります。一方で、トランザクションが長期間オープンのままになることは望ましくありません。データベースをロックすると、競合が発生し、スループットが低下します。