【问题标题】:How do I update the entity with the foreign key?如何使用外键更新实体?
【发布时间】:2013-01-25 14:49:26
【问题描述】:

我有两个实体如下:

 public class Package
     {
            public int PackageId { get; set; }
            public int BusinessId { get; set; }

             public string Name { get; set; }
     }

还有

   public class Business
     {


    public int BusinessId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    }

我想编辑包并更新相关的业务实体。我一直在尝试以下方法:

    [HttpPost]
    public ActionResult Edit(Package package)
    {

        if (ModelState.IsValid)
        {

                db.Packages.Attach(new Package { PackageId=package.PackageId
       });


                db.Entry(package).State = EntityState.Modified;

                db.SaveChanges();


            return RedirectToAction("Index");
        }
        ViewBag.GenreId = new SelectList(db.Businesses , "BusinessId", "Name", package.BusinessId);
        return View(package);
    }

代码在此处停止并显示此消息:

ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象。

我一直在尝试类似这里的示例...http://blogs.msdn.com/b/efdesign/archive/2009/03/16/foreign-keys-in-the-entity-framework.aspx...但我不确定我做错了什么。

如何使用外键更新实体?

【问题讨论】:

标签: asp.net-mvc-3


【解决方案1】:
[HttpPost]
public ActionResult Edit(int packageId)
{

    var package = db.Packages.FirstOrDefault(x=>x.Id == packageId);
    if(TryUpdateModel(package))
    {
        ...
        db.SaveChanges();
    }
}

【讨论】:

  • 我试了一下,报错:实体类型DbQuery`1不是当前上下文模型的一部分。
  • @CloudyKooper 对不起,我编辑了我的问题,试试看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多