1
我在我的項目中的兩個實體:我可以更新工作單位庫存模式中的導航屬性嗎?
public class A
{
public int Id { get; set; }
public DateTime CreatedDateTime { get; set; }
public virtual B B { get; set; }
}
public class B
{
public int Id { get; set; }
public Nullable<DateTime> LastAliveTime { get; set; }
public virtual ICollection<A> A { get; set; }
}
我使用實體框架的工作庫模式的單位,我做到以下幾點:
stirng id = "abc";
var aService = unitOfWork.GetRepository<A>();
var ins = aService.FindBy(a => a.Id == id);
我知道,這是確定以更新插入並保存dbcontext。
我需要知道的是:
ins.B.LastAliveTime = DateTime.UtcNow;
將這項工作始終
?
這是更新B實體的LastAliveTime的正確方法還是應該像下面初始化另一個存儲庫?
var bService = unitOfWork.GetRepository<B>();
爲什麼根本不需要每個實體類型的存儲庫? – Evk
假設'虛擬'表示延遲加載,它取決於底層的上下文生存期。如果上下文仍然存在,當你調用'ins.B',或者'ins.B'已經被加載時,它就會工作。否則,你會得到'InvalidOperationException',試圖在處理上下文時加載'B'。 – Dennis