2011-01-27 8 views
0

こんにちは、私は誰かが正しい方向に私を向けることを望んでいます。mvc-mvvmでエンティティモーダルを使用する

私はmvcアプリケーションを作成したい私は音楽ストアの例を使って自分のやり方を変えたことがありますが、それでもやるべきことは100%確実ではありません。

料理レシピを保存するアプリケーションを作成したいとします。 私はIngredientID IngredientTable 3つのテーブル

RecipeTable RecipeID RecipeName

RecipeIngredients RecipeIngredientID RecipeID IngredientID 測定

を持ってIngredientName

すべてがPK & FKマッピングVeを持っています私は新しいmvcアプリケーションを作成し、エンティティフレームワークを使用して新しいエンティティを作成します。 RecipeDB

私の次のステップは、テーブルごとに新しいモデルを作成し、プロパティに自分の希望する表示名を付け、必要なフィールドを余分に指定することです。

たとえば、ビューモデルを作成しますか?

public class RecipesViewModel 
{ 
    public int RecipeID { get; set; } 
    public string RecipeName { get; set; } 
    public List<RecipeIngredients> { get; set; } 

} 

私は今コントローラ(Ithink)を作成するが、私は、データベースの実体にそれをバインドする方法を実際に確認していないようなものになりますRecipesViewModel。

私はあなたがRecipeEntities db = new recipeEntites();のようなことをしてデータベースを呼び出すことができると知っています。しかし結果をVMに結びつけるには、それをどうやって行うのか少し混乱します。

これまで正しい方向に向かっていますか?

答えて

1

AutoMapperを使用できます。これは、あるタイプから別のタイプへ、そしてあなたの場合はモデルからビューモデルへの変換を可能にする素晴らしいツールです。

public ActionResult Foo() 
{ 
    RecipeDB model = _repository.GetRecipies(); 
    RecipesViewModel viewModel = Mapper.Map<RecipeDB, RecipesViewModel>(model); 
    return View(viewModel); 
} 

またはあなたも、あなたは、単に書くことができる(one I used in my sample MVC projectのような)カスタムアクションの属性を定義することができます。

[AutoMap(typeof(RecipeDB), typeof(RecipesViewModel))] 
public ActionResult Foo() 
{ 
    RecipeDB model = _repository.GetRecipies(); 
    return View(model); 
} 
+0

再びこんにちはダーリン:)何_repositoryであることは、新たなだけプライベートRecipeDBの_repository =ということですRecipeDB()? –

+0

@Diver Dan、コントローラのコンストラクタに渡されるインターフェイスです。このインターフェイスには、モデルの操作が含まれます。 –

関連する問題