私の最初の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
}
モデルによっては、状況によって異なることがあります。ビューモデルは、パーシスタンス(データベース)モデルとは異なり、目的が異なります。 – MikeSW
ビューモデルはデータを表示するのに便利です。フォームの場合は、 mが戻ってくる。コントローラは、受信したモデルを「分割」して、関連するデータをビジネスロジックとデータベースにリダイレクトする必要があります。 – MikeSW