EF 2.1 неправильно переводит Group By Query - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь получить запрос, работающий на EF 2.1, к существующей базе данных.Я получаю сообщение об ошибке, из-за которого я неправильно настроил свои модели.

Мои модели:

public class Job
{
    public int JobId { get; set; }
    public JobStatus JobStatus { get; set; }
}

public class JobStatus
{

    [Key]
    public string JobStatusId { get; set; }

    public string Colour { get; set; }

    public ICollection<Job> Jobs { get; set; }

}

Мой запрос:

var jobs = _context.Jobs
        .GroupBy(p => p.JobStatus.Colour)
        .Select(g => new { colour = g.Key, count = g.Count() });

Ошибка"Недопустимое имя столбца 'JobStatusId'. EF переводит в следующий запрос:

SELECT [p.JobStatus].[Colour] AS [colour], COUNT(*) AS [count]
  FROM [Jobs] AS [p]
  LEFT JOIN [JobStatus] AS [p.JobStatus] ON [p].[JobStatusId] = [p.JobStatus].[JobStatusId]
  GROUP BY [p.JobStatus].[Colour]

Что не так. p.JobStatusId не существует, это должен быть p.JobStatus.JobStatusId. Чтоя делаю не так?

ОБНОВЛЕНИЕ

Я добавил это в свою модель работы;

public string JobStatusFK {get; set;}

И попробовал следующее:

modelBuilder.Entity<Job>().HasOne(x=>x.JobStatus).HasForeignKey(p => p.AuthorFK);

Однако Intellisense не позволяет этого:

'ReferenceNavigationBuilder<Job, JobStatus>' does not contain a definition for 'HasForeignKey' and no accessible extension method 'HasForeignKey' accepting a first argument of type 'ReferenceNavigationBuilder<Job, JobStatus>' could be found 

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Необходимо убедиться, что JobStatusId - это FK в классе Job.

Вы можете использовать приведенное ниже объявление в классе Job или использовать HasForeignKey в классе DBContext, используя свободный API.

public string JobStatusId { get; set; }
0 голосов
/ 11 октября 2018

Это связано с тем, что ваше Job : JobStatus имеет отношение Many-to-One.

EF подумал, что есть внешний ключ, который ссылается на JobStatus, то есть на столбец JobStatusId в Job, установленном какFK.

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