实体框架中的双主键

时间:2013-11-26 20:50:43

标签: entity-framework primary-key

我使用实体框架应用程序获得数据库第一个MVC4应用程序。我的一个表有一个复合主键,由两个实体属性组成。我有一个MVC控制器,可以处理简单的CRUD活动。通过此控制器输入数据工作正常。 但是,当我尝试编辑现有数据时会抛出异常。

"The number of primary key values passed must match number of primary key values defined on the entity"

控制器中的“edit(int id = 0)”方法只接受一个参数,因此我需要能够传递另一个参数,以便它可以找到正确的数据记录。有人可以帮助我,并解释我如何做到这一点。

1 个答案:

答案 0 :(得分:2)

如果您尝试编辑具有复合主键的记录,则需要标识记录主键所需的所有列的值。

因此,您的操作方法需要同时接受两个值(假设为两个)

public ActionResult Edit(int idField1, int idField2, string newValue) {
  // logic to identify object using idFields, apply new value and save
}

您还应该能够在MVC中使用模型绑定(假设类型为MyObject的对象):

public ActionResult Edit(MyObject obj) {
  // logic to identify object using idFields in obj, apply new value and save
}

在任何一种情况下,都需要将复合键中包含的所有id值提供给操作。这同样适用于旨在返回一个唯一对象的Detail方法。