2
我有一個ToDo類,它具有Staff和Priority的屬性。如果用戶更新了待辦事項項目,改變了TASKNAME,也許設置一個新的優先級我怎麼更新Priority屬性 -如何使用Entity Framework更新嵌套屬性
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);
}
UI具有Staff和Priority的下拉/組合列表,但ddlPriority.SelectedValue不是Priority對象。我可能調用數據庫傳遞SelectedValue返回Priority對象,然後將其傳遞到ToDo對象,但這似乎很瘋狂只是爲了創建/維護ToDo項目和它的優先級之間的關係。
通常我使用fk(PriorityID)方法,但所有的例子似乎只是引用了實體而不是Id,我想看看對我來說這是如何解決的。能夠對實體進行查詢是一個很好的好處 - 但爲了更新ToDo,往返數據庫關心我。我也有一個工作人員的關係,這將是另一次旅行,這是一個只有兩個關係的「簡單」對象,那些更復雜的關係呢? – 2010-08-05 20:38:10
@Simon - 大多數例子都有參考方法,因爲它們是示例。它們不適合真實世界的場景。一個更「複雜」的對象仍然會使用上面描述的PK/FK方法。看到我的編輯上面的另一種方式(這可能是你想要做的)。 – TheCloudlessSky 2010-08-05 21:28:25