我在MVC WebApp中使用Entity Framework我可以更新修改后的条目,但我无法添加关系。
我知道这里已经解决了类似的问题。但我无法找到确切的答案。 我无法更新实体
我有一个实体购物车装载。
public class CartLoad
{
public int CartLoadID{get; set;}
public string Description{get; set;}
..... some more properties
public virtual User Driver { get; set; }
}
一个将数据传递给控制器的ViewModel就好了。
public class CartLoadEditView
{
public CartLoad CartLoad { get; set; }
public string DriverID { get; set; }
public SelectList Drivers { get; set; }
}
然后在控制器中,当我保存模型时,除了Driver之外,CartLoad的所有属性都会更新。由Microsoft.Indentity框架创建的用户表中的用户和用户。
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(CartLoadEditView CartLoadEdit)
{
CartLoad cartLoad = new CartLoad();
if (ModelState.IsValid)
{
User CLDriver = await usrManager.FindByIdAsync(CartLoadEdit.DriverID);
CartLoadEdit.CartLoad.Driver = CLDriver;
db.CartLoads.Attach(cartLoad);
cartLoad = CartLoadEdit.CartLoad;
db.Entry(cartLoad).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
....
当我将断点添加到
时db.Entry(cartLoad).State = EntityState.Modified;
我可以看到cartLoad.Driver属性已填充我选择的驱动程序,但它不会在DB中更新
我找到的解决方案是将DriverID属性添加到CartLoad实体并更新它。这真的是正确的解决方案吗?当使用CodeFirst方法时,EF已将DriverId属性添加到CartLoad实体。
感谢。