1

外部キー値を持つ新しいエンティティ オブジェクトを作成するとき、オブジェクトの新しいエンティティ キー (.net 3.5 のエンティティ フレームワーク) を作成する必要がありますが、アプリケーションのどこでこれを行うべきかを判断するのに苦労しています。

現在、外部キーを使用して新しいレコードを作成するときは、コントローラーでエンティティ キー (この場合はメンバーシップ プロバイダーから取得したユーザー ID) を作成し、それをオブジェクトに割り当てて、リポジトリサービス レイヤーに渡します。

これに何か問題がありますか、それともオブジェクトとユーザー ID をリポジトリサービス レイヤーに渡して、エンティティ キーの作成を処理する必要がありますか? 1 つのオブジェクトを渡す方がすっきりしているように見えますが、この方法で複数のコントローラーにキーを割り当てると緊張します。ありがとう。

4

1 に答える 1

4

これは関心の分離の問題だと思います。リポジトリは、エンティティの取得と追加/変更/削除に関係しています。エンティティの構築を担当するべきではありません。逆に、コントローラーは実際にはエンティティの構築も担当するべきではありません (コントローラーは、データをビューにプッシュし、ビューからのコマンドを処理して、それらのコマンドをビジネス ロジックに委任するために必要な最低限の作業量にする必要があります...ビジネスロジックは別の場所 (ドメインなど) に属します) 正直なところ、エンティティを作成するプロセスを処理するには、何らかの種類の EntityBuilder を作成する必要があります。オブジェクトとユーザー ID をビルダーに渡すと、完全に構築されたエンティティが提供され、それをリポジトリに渡すことができます。

編集:

「リポジトリ」から「サービス層」に変更しても、プリンシパルは同じままです。エンティティを構築するプロセスを専用のビルダーに委任し、関心の分離を維持します。

于 2009-08-27T16:51:32.410 に答える