У меня есть два лица, в моем проекте:Могу ли я обновить свойство навигации в шаблоне репозитория рабочей единицы?
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;
Будет ли эта работа всегда
?
Это правильный способ обновления LastAliveTime объекта B или я должен инициализировать другой репозиторий, как показано ниже?
var bService = unitOfWork.GetRepository<B>();
Почему вообще у вас есть репозиторий на тип сущности? – Evk
Предполагая, что 'virtual' означает lazy-load, это зависит от основного жизненного цикла. Если контекст все еще жив, когда вы вызываете 'ins.B', или' ins.B' уже загружен, он будет работать. В противном случае вы получите 'InvalidOperationException', пытаясь загрузить' B', когда контекст будет удален. – Dennis