Мои настройки следующие. У меня есть JobModel, который довольно большой, но вот важная часть:
public class JobModel
{
public int JobId { get; set; }
public int ProcessId { get; set; }
public ProcessModel Process { get; set; } // Uses ProcessId as foreign key
public int StatusId { get; set; }
public StatusModel Status { get; set; } // Uses StatusId as foreign key
public ProcessStatusModel ProcessStatus { get; set; } // Uses ProcessId and StatusId as foreign key
// Rest of the class is irrelevant to this issue...
}
JobModel
настраивается в ядре Entity Framework через Fluent API, например:
modelBuilder.Entity<JobModel>(job =>
{
job.ToTable("Job").HasKey(j => j.JobId);
job.HasOne(j => j.Process);
job.HasOne(j => j.Status);
job.HasOne(j => j.ProcessStatus);
});
Я пытаюсь получить данные с помощью служебного метода (я намеренно оставил Debug.WriteLine
, поскольку они доказывают, что есть какое-то соединение):
public async Task<List<JobModel>> GetJobs(ProcessModel process)
{
// Returns 'Found 1932 jobs...'
Debug.WriteLine($"Found { context.Jobs.Count() } jobs...");
// Returns 'Found 10 process statuses'
Debug.WriteLine($"Found {context.ProcessStatuses.Count() } process statuses...");
// No issues here
var jobs = context.Jobs
.Where(j => j.IsDeleted == false
&& j.ProcessId == process.ProcessId
&& (j.IsDone == false || j.ModifiedDtm > DateTime.Now.AddDays(-2)));
// This throws an exception
return await jobs.ToListAsync();
}
Исключение имеет тип SqlException
и сообщение об исключении:
Неверное имя столбца 'ProcessStatusProcessId'. Неверное имя столбца 'ProcessStatusStatusId'.
Что, черт возьми, я делаю не так? Он работал до некоторых (не связанных) изменений кода и обновлений пакетов.
Я использую .NET Framework 4.7 и Entity Framework Core 3.1.0