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