Я использую EF Core 2.1, первый подход к базе данных .Я пытаюсь включить () объект внешнего ключа при извлечении моей целевой коллекции объектов, но происходит нечто странное.
Структура объекта - Job -> JobStatus.Я выбираю некоторые объекты Job и хочу включить свойство внешнего ключа JobStatus в Job. Проблема в том, что сущность JobStatus имеет свойство ICollection [Job], которое заполняет каждое задание из базы данных. Это приводит к тому, что полезная нагрузка имеет размер в гигабайтах.
Когда я включаюJobStatus на работе, я хотел бы удовлетворить одно из следующих решений.Я также открыт для других решений или обходных путей, о которых я не думал.* как я могу предотвратить заполнение свойства JobStatus ICollection?* Или я могу запретить Entity Framework генерировать это свойство в первую очередь?
Я уже исследовал Игнорирование ReferenceLoopHandling
services.AddMvc().AddJsonOptions(options => {
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
Вот сущности, автоматически генерируемые Entity Framework.
public partial class Job
{
public long Id { get; set; }
public long StatusId { get; set; }
public JobStatus Status { get; set; }
}
public partial class JobStatus
{
public JobStatus()
{
Job = new HashSet<Job>();
}
public long Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ICollection<Job> Job { get; set; }
}
Пример кода, вызывающего проблему
var jobs = _context.Set<Job>()
.Where(job => job.Id == 1)
.Include(job => job.Status);