2012-02-10 5 views
1

私の最初のMVC3 EF 4.2サイトです。クエリや保存時に、現在ViewModels上で混乱しています。私がこれをうまく説明できない場合、私はこのことをどのように言いたいのか分かりません。 .edmxは自動的にテーブルクラスを作成しましたが、製品を完全に表示/編集するためにテーブルに結合する必要があることを考慮して、ViewModelを作成する方が良いことを読んだ。以下のコントローラコードは、編集する製品を出力するテーブルを結合して保存する場所です。私の質問 - DbContextまたは自分のProductViewModel.csによって生成されたProduct.csモデルに、製品を保存する正しい方法は何ですか?MVC 3/EF 4.2 - ViewModelに対して編集すると、ModelまたはViewModelに対して保存できますか?

プロダクトをクエリしてテーブルに結合し、次にviewmodelsパラメータにマップする簡単な方法はありますか?

誰かが製品を表示/クリックするたびに製品を保存/更新したいので、別のViewModelを作成してそのパラメータだけを更新するか、もう一度Productモデルを使用するかわかりませんでした。

希望は意味があります!必要に応じてさらに説明することができます。あなたがビューに複数のモデルを渡すためにViewModelにを使用していますが、データを保存するとき、あなたは適切なモデルに保存する必要が

private SiteForgeEntities db = new SiteForgeEntities(); 

public ActionResult Edit(int id) 
    { 
     var viewModel = (
      from a in db.Products 
      join b in db.Sites 
      on a.SiteId equals b.SiteId 
      join c in db.Sections 
      on a.SectionId equals c.SectionId 
      join d in db.Affiliates 
      on a.AffiliateId equals d.AffiliateId 
      select new ProductViewModel() 
      { 
       ProductId = a.ProductId, 
       Product = a.Product, 
       Description = a.Description, 
       Image = a.Image, 
       Price = a.Price, 
       Clicks = a.Clicks, 
       Link = a.Link,   
       Site = b.Site, 
       Section = c.Section, 
       Affiliate = d.Affiliate 
      }).Single(x => x.ProductId == id);  

     return View(viewModel); 
    } 

    [HttpPost]  
    public ActionResult Edit(Product product) 
    { 
    ...update database...do I pass in and save back to Product or my ProductViewModel 
    } 
+0

モデルによっては、状況によって異なることがあります。ビューモデルは、パーシスタンス(データベース)モデルとは異なり、目的が異なります。 – MikeSW

+0

ビューモデルはデータを表示するのに便利です。フォームの場合は、 mが戻ってくる。コントローラは、受信したモデルを「分割」して、関連するデータをビジネスロジックとデータベースにリダイレクトする必要があります。 – MikeSW

答えて

0

。製品を追加または変更する場合は、DbContextを使用して商品を商品に追加します。あなたが代わりのViewModelですべてを渡すのテーブルを構築するためにこれを使用することができます

public virtual ICollection<SomeOtherModel> SomeOtherData { get; set; } 

:あなたはProduct.csモデルに二つのモデルの間で定義された1対多の関係を(持っている場合は、としてプロパティを宣言している場合がありますEF4を使用したCRUD操作に関する素晴らしいチュートリアルがあります。http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvcの短いチュートリアルをご覧ください。

+0

これは私のためにこれをクリアしていただきありがとうございます。 – chearner

関連する問題