我有一张桌子,我正在尝试更新。这是我的模特。
Value
在编辑public class Preference
{
[Key, ForeignKey("Profile"), Column(Order = 0)]
public int UserId { get; set; }
public virtual Profile Profile { get; set; }
[Key, ForeignKey("PrefAvatar"), Column(Order = 1)]
public int AvatarId { get; set; }
public virtual PrefAvatar PrefAvatar { get; set; }
[Key, ForeignKey("PrefSidebar"), Column(Order = 2)]
public int SidebarId { get; set; }
public virtual PrefSidebar PrefSidebar { get; set; }
}
方法中,为了让我为登录的用户获取正确的首选项集,我获取用户身份并将其与用户表中的autoId ID匹配并设置它为id,然后获取包含该用户首选项的单个记录,如下所示:
GET
这允许用户查看他当前的偏好。当我试图保存时,我遇到了麻烦。尝试实施stackoverflow上提供的建议以及microsoftdocs上的建议,我得到属性'AvatarId'是对象的关键信息的一部分,无法修改当我尝试更新记录时。这是我尝试过的:
var id = result.UserId;
var Preferences = db.Preferences.SingleOrDefault(a => a.UserId == id);
答案 0 :(得分:0)
您可以尝试专门为Preference
添加密钥,然后将外键设为外键,而不是keys
[Key]
public int PreferenceId { get; set; }
[ForeignKey("Profile"), Column(Order = 0)]
public int UserId { get; set; }
public virtual Profile Profile { get; set; }
...