实体框架更新实体关系

时间:2016-05-19 15:46:38

标签: asp.net-mvc entity-framework relationship

我在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实体。

感谢。

0 个答案:

没有答案