Проекция.
Объявите модель представления для данных для вашего представления.(вместо передачи сущностей.)
[Serializable]
public class RecordDetailViewModel
{
public int MasterAPId { get; set; }
public string Year { get; set; }
public string Month { get; set; }
public string DocumentNumber { get; set; }
public string BoxNumber { get; set; }
public string LocationShortName { get; set; }
public string RackShortName { get; set; }
}
Спроецируйте запрос вашей сущности в модель представления и верните:
var viewModels = db.MasterAPs
.Where(x => x.Month == month) // "2"
.Select(x => new RecordDetailViewModel
{
MasterAPId = x.MasterAPId,
Year = x.Year,
Month = x.Month,
DocumentNumber = x.DocumentNumber,
BoxNumber = x.RecordManagementAP.BoxNumber,
LocationShortName = x.MasterLocation.LocationShortName,
RackShortName = x.MasterRack.RackShortName
}).ToList();
Предполагая, что ваши связи сущностей были сопоставлены.
Ключевое слово Include
используется, когда вы возвращаете целые сущности и хотите предварительно извлечь связанные сущности (включить их), а не лениво загружать их, если к ним обращаются.Как правило, извлекать сущности (и связанные сущности) следует только тогда, когда вы хотите сделать что-то вроде обновления, в котором вы либо принимаете модель представления или набор полей для обновления из представления, загружаете сущность (и) и применяете обновления перед сохранениемюридические лица.Не передавайте сущности представлениям.Это предоставляет больше информации о вашем домене, чем вам нужно, требует больше памяти и может привести к ошибкам или ошибкам производительности при сериализации отношений.Получение сущностей из представлений хуже, так как это может сделать вашу систему уязвимой для неожиданных изменений, потенциальных ошибок привязки и перезаписи данных устаревшими изменениями.