EF core 3 вложенная группа после ограничения оценки клиента - PullRequest
1 голос
/ 03 октября 2019

После обновления до ядра 3 инфраструктуры объектов приведенный ниже код вызывает исключение при попытке получить h.CreationDateTime.Hour, в EF core 2 эта часть была выполнена на клиенте. но теперь, когда EF Core 3.0 обнаруживает выражения, которые не могут быть переведены где-либо еще в запросе, он выдает исключение времени выполнения.

var x = dbContext.data.GroupBy(c => c.CreationDateTime.Day)
                            .Select(d => new
                            {
                                day = d.Key,
                                hours = d.GroupBy(h => h.CreationDateTime.Hour).Select(h => new
                                {
                                    hour= h.Key,
                                    count = h.Count()
                                }).ToList()
                            }).ToList();

Есть ли способ, которым этот код может быть переписан для получения того же результата. любая помощь приветствуется.

1 Ответ

1 голос
/ 03 октября 2019

Использование .AsEnumerable () переключает его на LINQ для объекта в соответствии с документацией Microsoft. https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/

 var x = dbContext.data.GroupBy(c => c.CreationDateTime.Day)
                        .AsEnumerable()
                        .Select(d => new
                        {
                            day = d.Key,
                            hours = d.GroupBy(h => h.CreationDateTime.Hour).Select(h 
                            => new
                            {
                                hour= h.Key,
                                count = h.Count()
                            }).ToList()
                        }).ToList();
...