私は製品クラスを持っています:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Amount { get; set; }
public virtual Brand Brand { get; set; }
}
私はこれを行うモデルを更新しようとしています:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
product.Brand = db.Brands.Find(product.Brand.Id);
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
問題は、すべてのプロパティが更新されていることですが、ブランド !! 更新するにはどうすればよいですか?
私が行った場合:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
db.Products.Attach(product);
product.Brand = db
.Brands
.Find(2); // << with a static value
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
それは機能します...しかし、BrandIdが2であっても、以下でこれを試してみると機能しません:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
db.Products.Attach(product);
int BrandId = product.Brand.Id;
product.Brand = db
.Brands
.Find(BrandId);
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}