У меня есть два класса сущностей, которые имеют отношение один ко многим.
public class Call : IEntity
{
public int Id { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
public class User : IEntity
{
public int Id { get; set; }
public string Username { get; set; }
public virtual ICollection<Call> Calls { get; set; }
}
И у меня есть модель представления для операций 'Call' на веб-слое.
public class CallVm : IViewModel
{
public string Id { get; set; }
public string UserFullname { get; set; }
}
И я использую метод для преобразования моего объекта 'Call' в 'CallVm' объект. Этот метод вкратце выглядит следующим образом.
public CallVm MapCallVm(Call call)
{
return call == null ? null : new CallVm { Id = call.Id, UserFullname = call.User?.Fullname };
}
Когда я читаю сущность «Вызов» из базы данных, я иногда включаю «Пользователь», а иногда нет. Когда я не включаю его, в объекте Call отсутствует определение свойства User, потому что это ленивая загрузка. Поэтому я получаю следующую ошибку в методе MapCallVm.
Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.
Есть ли способ проверить это? Я просто хочу назначить UserFullname = call.User?.Fullname
, когда есть напряженная нагрузка. Единственное решение, которое я могу придумать, - это управление с помощью try-catch. Есть ли другое решение?