Я создаю проект Entity Framework 7 для замены проекта Entity Framework 6.
У меня есть объект Item, принадлежащий стране. Затем у меня есть запрос linq, который подсчитывает количество по странам. Вот запрос.
var results = allItems
.GroupBy(g => g.Country)
.ToDictionary(s => s.Key, s => s.Count());
Это работает с EF6, но вызывает исключение с EF 7 (исключение находится внизу).
Это моя сущность:
public class Item
{
[Key]
public int id { get; set; }
[Required]
public int Countryid { get; set; }
[ForeignKey("Countryid")]
public virtual Country Country { get; set; }
}
В EF 7 с помощью отладчика я вижу, что Country имеет значение null (это свойство навигации), но у меня есть countryid. В EF 6 у меня есть объект для свойства навигации. Кроме того, у меня есть модульные тесты с использованием Moq, и они работают (свойство show the nav).
Я попытался добавить включение, но мне это не нужно. Мне это не понадобилось ни в EF 6, ни в Mock.
Использование include дает следующее:
var results = allItems
.Include(i => i.Country)
.GroupBy(g => g.Country)
.ToDictionary(s => s.Key, s => s.Count());
Я получаю ту же ошибку.
Вот ошибка:
Выражение типа 'System.Func
2[Microsoft.Data.Entity.Query.EntityQueryModelVisitor+TransparentIdentifier2 [Microsoft.Data.Entity.Query.EntityQueryModelVisitor + TransparentIdentifier2[FMS.DAL.Entities.ActionItem,Microsoft.Data.Entity.Storage.ValueBuffer],Microsoft.Data.Entity.Storage.ValueBuffer],FMS.DAL.Entities.MemberCountry]' cannot be used for parameter of type 'System.Func2 [FMS.DAL.Entities.ActionItem, FMS.DAL.Entities.MemberCountry] »метода' System.Collections.Genrable_6. DAL.Entities.MemberCountry, FMS.DAL.Entities.ActionItem]] _GroupBy [ActionItem, MemberCountry, ActionItem] (System.Collections.Generic.IEnumerable1[FMS.DAL.Entities.ActionItem], System.Func2 [FMS.DAL.Entities.ActionItem, FMS.DAL.Entities.MemberC .Func`2 [FMS.DAL.Entities.ActionItem, FMS.DAL.Entities.ActionItem]) '