0

私はこのエンティティを持っています:

public class Task
{
     public int Id {get;set;}
     public string Title {get;set;}
     public List<User> Users{get;set;}
}

このオブジェクトを関連データとともに保存する正しい方法は何ですか?私のアクションで、ビューからユーザーIDを持つタスクとリストを取得すると仮定します:

public ActionResult Save(Task task, List<int> users)
{
     _repository.Save(task, users) //should I do it?
}

//or it?
public ActionResult Save(Task task, List<int> users)
{
     task.Users = _userRepository.GetAllUsers(users);
     _repository.Save();
}
4

2 に答える 2

2

リポジトリで何が起こっているかを知っておくと役立つ場合がありますが、通常、リポジトリはエンティティに対していかなる種類の動作も呼び出すべきではありません。永続化と再構成のみを担当する必要があります。一般的なワークフローは次のとおりです。

  1. エンティティは ID によって読み込まれます。
  2. 必要なパラメーターが渡されたエンティティで動作が呼び出されます。
  3. リポジトリに明示的に保存するか、アンビエント トランザクションと作業単位をコミットすることにより、変更がコミットされます。

このコードは、MVC コントローラーに直接配置することも、コントローラーによって参照されるアプリケーション サービスに配置することもできます。

于 2012-12-04T21:22:21.097 に答える
1

質問は不明ですが、私は次のようにします。コードの 2 つのビットを比較すると、最初のビットは他のビットよりも読みやすく、ユーザーが知る必要のないすべてのセットアップ作業がカプセル化されています。

ただし、「保存」とは名前を付けません。具体的ではありません。

_repository.Save(task, users) 
于 2012-12-05T01:46:50.687 に答える