我正在使用MVC作为我的网络应用程序。在以下场景中需要帮助。
我的数据库中有3个表:
然后将这些表映射到各自的模型类。
使用scaffolding,我根据' Role_Page'创建控制器和视图。模型。
现在,点击'编辑',我将相应的ID_ROLE和ID_PAGE作为参数传递给'查找' DBContext的方法。
但是我得到了'序列包含多个元素'何时调用该方法。
非常感谢任何帮助和指示!
控制器代码:
public ActionResult Details(int? ID_ROLE, int? ID_JOB)
{
if (ID_ROLE == null || ID_JOB == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ROLE_JOB rt_ROLE_JOB = db.ROLE_JOB.Find(ID_ROLE, ID_JOB);
if (rt_ROLE_JOB == null)
{
return HttpNotFound();
}
return View(rt_ROLE_JOB);
}
答案 0 :(得分:3)
Find
需要主键。您试图在没有主键的表格上使用它。是问题。
你想要的是:
YourContext.Role_Pages.Single(x => x.ID_PAGE == somePageID && x.ID_ROLE == someRoleID)
请注意,如果未找到记录或找到多条记录,Single
将抛出异常。您应该查看其他LINQ函数 - SingleOrDefault
,First
,Any
,Where
等,并在适当时使用。
答案 1 :(得分:0)
Find
需要提供 [Table] Primary Key
您也可以提供您的 key
作为谓词
DbContext.ROLE_JOB.Find(a => a.ID_ROLE== ID_ROLE);
或 DbContext.ROLE_JOB.Find(a => a.Id == ID_ROLE && a.ID_JOB == ID_JOB);
如果找到成功,它将返回一条记录。