EF Core - вычисляемая колонка с иностранным соответствием - PullRequest
0 голосов
/ 06 июля 2018

Скажите, что у меня есть такой запрос:

SELECT TOP (1000) 
       [Apps].Id,
       [Apps].Name,
       (SELECT COUNT(*) FROM [DbName].[dbo].[Requests] Requests WHERE [Apps].Id = [Requests].AppId) as PendingRequests
  FROM [DbName].[dbo].[Apps] Apps

Есть ли способ отобразить этот столбец подсчета без использования хранимой процедуры?

Я пробовал что-то вроде этого, что, похоже, не работает:

modelBuilder.Entity<AppModel>()
    .Property(m => m.PendingRequests)
    .HasComputedColumnSql(
        "(SELECT COUNT(*) FROM [Requests] " +
        "WHERE [Apps].[Id] = [Requests].[AppId]) as PendingRequests"
    );

Я мог бы просто использовать заполненные IEnumerable сторонних объектов для проверки Count(), но это по понятным причинам не было бы очень производительным со списками родительского объекта.

Какие-нибудь советы?

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете сделать отображение в запросе:

from row in _db.Apps select new App() {
                     Id = row.Id
                     PendingRequests = row.Requests.Count()
                     }

Я предполагаю, что вы установили правильные FK, чтобы навигационные свойства работали.

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