Мой первый сайт MVC3 EF 4.2, и я запутался в некоторых вещах, в настоящее время в ViewModels при запросах и сохранении. Пожалуйста, поправьте меня, если я плохо объясню это, я не уверен, как это назвать. .Edmx автоматически создал классы таблиц, но я прочитал, что было бы лучше создать ViewModel, учитывая, что мне нужно объединить таблицы, чтобы полностью отобразить / отредактировать мой продукт. В приведенном ниже коде контроллера я объединяю таблицы, чтобы вывести продукт для редактирования, а затем сохранить. Мой вопрос - как правильно сохранить Продукт, в модель Product.cs, сгенерированную DbContext или в моем собственном ProductViewModel.cs?
Есть ли более простой способ запросить продукт и объединить таблицы, а затем сопоставить их с параметрами viewmodels, или я продолжаю делать все это в контроллере, как показано ниже?
Я также хочу сохранять / обновлять продукт каждый раз, когда кто-то просматривает / нажимает на него, поэтому я не был уверен, создаю ли я отдельную ViewModel для обновления только этого параметра или снова, использую модель Product.
Надеюсь, это имеет смысл! Я могу объяснить дальше, если это необходимо.
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
}