2011-07-04 3 views
0

This MVC tutorialの分離を使用して:MVCのSelectListのそうのようなdropdownlistsを行うことが示唆懸念

// 
// POST: /StoreManager/Create 
[HttpPost] 
public ActionResult Create(Album album) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Albums.Add(album); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    ViewBag.GenreId = new SelectList(db.Genres, "GenreId", 
"Name", album.GenreId); 
    ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", 
"Name", album.ArtistId); 
    return View(album); 
} 

私はMVCに新しいですが、それは、データベースの呼び出しを行うので、これは懸念の良好な分離ではないように思えますコントローラ内。これは正しいです?

良い方法がありますか?

答えて

0

プロジェクトの複雑さを決定するのはあなた次第です。プロジェクトが大きくなるほど、このアプローチをとるべきではありません。リポジトリパターンを使用してデータを返すことを最低限にお勧めします。第2に、上記の例のようにViewBagを使用します。これは強く推奨されないものです。確かにそれはそこに 'クール'そこ - しかし、一般的にこのデータは強く型付きビューに行くデータを表すビューモデルではなく、正しく使用するフィールド名を間違って入力するViewBagの動的な魔法ではありません。

0

私は、データベースを呼び出すのは、データベースに問い合わせる限り、必ずしも悪いことではないと思います。プロジェクトの大きさ、寿命、複雑さ、など

しかし、クエリのためには、軽量なクエリメカニズムがうまくスポットを打つ::)もちろん

いつもの答えが適用され、「それが依存します」。

コマンド/クエリ責任分掌(CQRS)—を見に興味があるが、あなたは、あなたがそれに慣れていない場合は、その最も基本的な形のCQRSでかなり実際にあるので、イベントソーシングと混同しないように注意がかかる場合があります単純な考え方:どのドメイン操作からの読み込み(クエリ)も分けてください。

データの状態を操作するデータベース呼び出しを行うことは、それほど賢明ではありません。

関連する問題