Базовое использование Entity Framework Включить в QueryType (представление базы данных) - PullRequest
1 голос
/ 14 мая 2019

У меня есть EF Core, подключенный к MySql, и у меня есть представление под названием:

PostViews

Я прочитал эту статью о том, что я могу использоватьТипы запросов для представлений базы данных.

Это работает, если я просто вызываю _context.PostViews, но если я использую параметр Включить для него, например:

_context.PostViews.Include (xxxx), он выбрасывает меняошибка:

System.InvalidOperationException: 'Свойство' Комментарий 'не является свойством навигации типа сущности' PostWithViews '.Метод «Включить (строка)» можно использовать только с «.»разделенный список имен свойств навигации. '

enter image description here

PostView имеет все свойства в Post (идентификатор, заголовок, содержимое, комментарий и т. д.),Кроме того, у него есть один дополнительный столбец с именем: Views, который показывает, сколько людей прочитали это сообщение.


Вот мое сообщение:

public partial class Post
    {
        public Post()
        {
            Comment = new HashSet<Comment>();
        }

        public string Id { get; set; }
        public string ApartmentId { get; set; }
        public string AuthorId { get; set; }
        public string CategoryId { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public DateTime? DueDate { get; set; }
        public bool? Disabled { get; set; }
        public DateTime? CreatedAt { get; set; }
        public DateTime? UpdatedAt { get; set; }
        public string UpdatedBy { get; set; }

        public virtual Apartment Apartment { get; set; }
        public virtual User Author { get; set; }
        public virtual PostCategory Category { get; set; }}
        public virtual ICollection<Comment> Comment { get; set; }
    }

Класс PostWithViews почти совпадает с классом Postно с еще 1 свойством

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

В настоящее время (EF Core 2.x) типы запросов не поддерживают свойства навигации по коллекциям , как упомянуто в Сравнение типов запросов с типами сущностей В разделе документации:

  • Они могут содержать только ссылочные навигационные свойства, указывающие на объекты.

Таким образом, хотя ваше свойство Comment выглядит как свойство навигации по коллекции, для EF Core оно не является, следовательно, не может использоваться в Include / ThenInclude (или запросе LINQ to Entities).

Однако Apartment, Author и Category являются "опорными навигационными свойствами, указывающими на объекты" , поэтому они должны быть полностью функциональными.

0 голосов
/ 14 мая 2019

функции включения требуется параметр запроса, но он все еще не знает свой объект, поэтому вам нужно использовать лямбда-функцию для передачи своего объекта и требуемого параметра

попробовать: _context.PostView.Include (лямбда => лямбда.комментарий);

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