EFCore сообщает "Неверные имена столбцов" - PullRequest
0 голосов
/ 11 декабря 2019

Мои настройки следующие. У меня есть 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...