我有以下模型,我试图找到一个特定的对象DbSet:
public class UserSkill
{
[Key, Column(Order = 1)]
public int UserId { get; set; }
[Key, Column(Order = 2)]
[ForeignKey("Skill")]
public int SkillId { get; set; }
public virtual Skill Skill { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图找到一个特定的以下两种方式UserSkill对象(我传递DbSet的UserSkills通过ViewBag):
ViewBag.UserSkills.Find(new { WebSecurity.CurrentUserId, item.SkillId })
ViewBag.UserSkills.Find(new UserSkill(WebSecurity.CurrentUserId, item.SkillId))
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,我都会收到错误:
传递的主键值的数量必须与实体上定义的主键值的数量相匹配.
我错过了什么?在我看来,主键由两列组成,我正在为find函数提供构成主键的两个值.
Ham*_*yan 41
Find方法的签名是TEntity Find(params Object[] keyValues),您可以按正确的顺序登记复合主键的键.
ViewBag.UserSkills.Find(WebSecurity.CurrentUserId, item.SkillId )
Run Code Online (Sandbox Code Playgroud)
小智 7
要按复合键查找实体,您应该使用此重载
ViewBag.UserSkills.Find(WebSecurity.CurrentUserId, item.SkillId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21445 次 |
| 最近记录: |