![](/img/trans.png)
[英]How do I update an entity with nested entities with AutoMapper and save the updated Entity with Entity Framework?
[英]How do I update a nested property with Entity Framework
我有一個ToDo類,它具有Staff和Priority的屬性。 如果用戶更新了待辦事項,請更改TaskName並設置一個新的Priority,如何更新Priority屬性-
public class ToDo : BaseEntity
{
public DateTime? DueDate { get; set; }
public String Notes { get; set; }
public virtual Priority Priority { get; set; }
public virtual Staff Staff { get; set; }
public String TaskName { get; set; }
}
在我的WinForms代碼中,我具有以下保存方法:
private void Save()
{
var todo = new ToDo
{
ID = ToDoID,
Staff = ddlStaff.SelectedValue,
Priority = ddlPriority.SelectedValue,
TaskName = txtTaskName.Text.Trim(),
Notes = txtNotes.Text.Trim(),
DueDate = String.IsNullOrEmpty(txtDueDate.Text) ? DateTime.Now : DateTime.Parse(txtDueDate.Text.ToString())
};
_todoController.SaveOrUpdate(todo);
}
用戶界面具有用於Staff和Priority的下拉列表/組合列表,但ddlPriority.SelectedValue不是Priority對象。 我可以調用傳遞SelectedValue的數據庫來返回Priority對象,然后將其傳遞到ToDo對象,但這似乎很瘋狂,只是為了創建/維護ToDo項與其優先級之間的關系。
您也可以設置並獲取一個名為PriorityId
的額外屬性。 由於它們是無狀態的,因此在Web應用程序中這是非常常見的情況。
編輯:您也可以這樣做:
var selectedStaff = new Staff();
selectedStaff.Id = 2;
context.Staff.Attach(selectedStaff); // The important part.
var todo = new ToDo
{
ID = ToDoID,
Staff = selectedStaff,
Priority = ddlPriority.SelectedValue,
TaskName = txtTaskName.Text.Trim(),
Notes = txtNotes.Text.Trim(),
....
}
context.SaveChanges();
調用context.Staff.Attach(someStaffObject)
基本上將staff對象添加到上下文中以允許對其進行引用。 您必須確保在調用Attach()
之前設置了key屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.