我可以在工作单元模式中更新我的导航属性吗?

时间:2016-11-21 09:04:13

标签: c# asp.net entity-framework asp.net-web-api unit-of-work

我的项目中有两个实体:

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; }
}

我正在使用工作单元库模式和Entity Framework,我执行以下操作:

stirng id = "abc";
var aService = unitOfWork.GetRepository<A>();
var ins = aService.FindBy(a => a.Id == id); 

我知道可以更新 ins 并保存 dbcontext

我需要知道的是:

ins.B.LastAliveTime = DateTime.UtcNow;

这项工作总是如此吗?

这是更新B实体的LastAliveTime的正确方法,还是应该像下面那样初始化另一个存储库?

var bService = unitOfWork.GetRepository<B>();

1 个答案:

答案 0 :(得分:1)

不需要那个。

您必须使用预先加载(Include(x=>x.B))或延迟加载。那你就不会有任何问题。