'Sequence contains more than one element' 调用 DBContext Find 时
'Sequence contains more than one element' when DBContext Find is called
我正在为我的网络应用程序使用 MVC。在以下情况下需要帮助。
我的数据库中有 3 个表:
- 页面:包含页面列表。主键:ID_PAGE
- 角色:包含角色列表。主键:ID_ROLE
- Role_Page :包含页面列表及其相关角色。没有主键。只有 ID_PAGE & ID_ROLE.
的外键
然后将这些表映射到它们各自的模型类。
使用脚手架,我基于 'Role_Page' 模型创建了控制器和视图。
现在,在单击 'Edit' 时,我分别将 ID_ROLE 和 ID_PAGE 作为参数传递给 DBContext 的 'Find' 方法。
但是当调用该方法时我得到 'Sequence contains more than one element'。
非常感谢任何帮助和指点!
控制器代码:
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);
}
Find
需要一个主键。您正在尝试在没有主键的 table 上使用它。有问题。
你想要的是这样的:
YourContext.Role_Pages.Single(x => x.ID_PAGE == somePageID && x.ID_ROLE == someRoleID)
请注意,如果未找到记录或找到多于一条记录,Single
将抛出异常。您应该查看其他 LINQ 函数 - SingleOrDefault
、First
、Any
、Where
等并酌情使用。
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);
如果成功找到,它会return给你一条记录。
我正在为我的网络应用程序使用 MVC。在以下情况下需要帮助。
我的数据库中有 3 个表:
- 页面:包含页面列表。主键:ID_PAGE
- 角色:包含角色列表。主键:ID_ROLE
- Role_Page :包含页面列表及其相关角色。没有主键。只有 ID_PAGE & ID_ROLE. 的外键
然后将这些表映射到它们各自的模型类。
使用脚手架,我基于 'Role_Page' 模型创建了控制器和视图。
现在,在单击 'Edit' 时,我分别将 ID_ROLE 和 ID_PAGE 作为参数传递给 DBContext 的 'Find' 方法。
但是当调用该方法时我得到 'Sequence contains more than one element'。
非常感谢任何帮助和指点!
控制器代码:
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);
}
Find
需要一个主键。您正在尝试在没有主键的 table 上使用它。有问题。
你想要的是这样的:
YourContext.Role_Pages.Single(x => x.ID_PAGE == somePageID && x.ID_ROLE == someRoleID)
请注意,如果未找到记录或找到多于一条记录,Single
将抛出异常。您应该查看其他 LINQ 函数 - SingleOrDefault
、First
、Any
、Where
等并酌情使用。
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);
如果成功找到,它会return给你一条记录。