[英]How do I update a table with only Foreign Key References?
我有一個要更新的表。 這是我的模特。
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; }
}
在Edit GET
方法中,為了讓我獲得登錄用戶的正確首選項集,我得到了用戶Identity,並將其與users表中的autoId ID匹配,並將其設置為id,然后獲取包含該用戶首選項的單個記錄,如下所示:
var id = result.UserId;
var Preferences = db.Preferences.SingleOrDefault(a => a.UserId == id);
這使用戶可以查看他當前的偏好。 當我嘗試保存時會遇到麻煩。 嘗試實現此處在stackoverflow上以及microsoftdocs上提供的建議,我得到了一個屬性'AvatarId'是對象的關鍵信息的一部分,當我嘗試更新記錄時無法對其進行修改 。嘗試過:
public ActionResult Edit(Preference preference)
{
var user = User.Identity.Name;
var userId = (from ui in db.Profiles where user == ui.someUser select ui.Id).SingleOrDefault();
var result = (from r in db.Preferences where userId == r.UserId select r).SingleOrDefault();
var id = result.UserId;
var myPreferences = db.Preferences.SingleOrDefault(am => am.UserId == id);
if (TryUpdateModel(myPreferences))
{
db.SaveChanges();
return View(preference);
}
return View(preference);
}
您可以嘗試添加專門用於Preference
的鍵,然后使外鍵只是外鍵,而不是keys
[Key]
public int PreferenceId { get; set; }
[ForeignKey("Profile"), Column(Order = 0)]
public int UserId { get; set; }
public virtual Profile Profile { get; set; }
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.