データアクセス用 ReSharper
使用するデータベースとドライバー /ORM に関係なく、アプリケーションでデータアクセスを設定するタスクは非常に似ています。 エンティティの作成からリポジトリの設定まで、ReSharper は、作業をより適切かつ迅速に実行できます。
エンティティ作成
エンティティはデータアクセスの中心であり、データベースからのデータを保存します。 ReSharper ではエンティティを素早く作成する方法がいくつもあります。 1 つの方法は、ソリューションエクスプローラーで Alt+Insert ショートカットを使うことで、見慣れた 生成する メニューから利用可能な ファイルテンプレート の一覧が表示されます:

上記のメニューで Class を選択すると、クラスに名前を付けるよう求められます。

そして、自動的に Person.cs と呼ばれるファイルの中に Person と呼ばれるクラスを得ます。
別の方法として、ReSharper にクラス名とそのメンバーを使用箇所から推測させることもできます。 例: クラス呼び出しを入力してから Alt+Enter を押すとクラスを 生成できます。

同様に、ReSharper はクラスメンバーを生成できます。 例: Name というプロパティを割り当てようとすることができ、ReSharper はプロパティを作成するオプションを提供します:

ReSharper はタイプを正しく推測しますが、変更することができます:

エンティティを構築するもう 1 つの方法は、 ライブテンプレートを使用することです。 ReSharper はインストール時に Visual Studio テンプレートを自動的にインポートするため、たとえば、 prop テンプレートを使用して、エンティティにプロパティをすばやく追加できます。

エンティティビルドアップ
多くの場合、エンティティをできる限りシンプルに保ちたいが、エンティティに機能を追加する必要がある場合があります。 例: 初期化コンストラクターは、エンティティを使いやすくします。 幸いなことに、このような場合には、ReSharper の メニューの生成 Alt+Insert があります。 このメニューでは、既存のタイプにさまざまな機能を追加できます。
Person 型に完全に初期化するコンストラクターを追加するとします。 これを行うには、クラスで Alt+Insert を押し、 Constructor を選択します。

どのプロパティを初期化するかを確認するダイアログが表示されます:

また、すべてのプロパティを選択して Finish を押すと、クラスは次の生成コンストラクターを取得します。
エンティティを HashSet<T> のようなコレクションで比較可能で容易にホスティング可能にしたいのなら、等価メンバーを実装する必要があります。 幸いなことに、ReSharper の 生成する メニューにも 対応するオプションがあります。
等価演算子
==と!=Equals()のオーバーロードを訂正する - オプションで -IEquatable<T>インターフェース良い
GetHashCode()法
ReSharper はすべてのプロパティを適切に扱ってくれるので安心です。すべての null チェックを行い、型に応じて Equals() または == を使ってプロパティの比較も行います。
最後の例(さらに多くのオプションがあります)は、 ToString() メソッドの自動作成です。 再度、どのプロパティを選択するか決めた後で、ReSharper がきれいに実装を生成します:
ORM が基本的なエンティティクラスを作成している場合でも、これらの機能を使用できることに注意してください。 生成されたクラスは通常部分的であるため、クラスの別の部分を作成し、その上で Generate アクションを実行することを妨げるものは何もありません。
インフラ
エンティティを準備したら、データベースの操作に役立つインフラストラクチャを設定します。 これの詳細はもちろん、使用する ORM やドライバによって異なりますが、ここでは NoRM と MongoDB の使用方法を見ていきます。
次のコードで始めるとしましょう:
最初にできることは、データベース接続データをリファクタリングすることです。 そのためには、 new ステートメントを選択して ReSharper の リファクタリング ショートカット Control+Shift+R を使用し、 メソッドの抽出オプションを選択します。

そのため、ReSharper ではメソッドの設定オプションが提供されています。 これを GetDatabase() と呼びましょう:

そして ReSharper が生み出すものは次のとおりです。
GetDatabase() に置き換えられた元の呼び出しでもちろん。