Переход от базы данных Entity Framework сначала к коду сначала создает проблемы для ObjectQuery и не приводит к загрузке должным образом - PullRequest
0 голосов
/ 25 мая 2018

Наша компания имеет программное приложение, которое использует

-Entity Framework 4

-Код Первый подход

Приложение, основанное на коде базы данных Entity Framework Database First,однако мы изменили его, чтобы начать использовать подход Code First.

У нас есть некоторые проблемы, аналогичные тем, о которых упоминалось в блоге Alex D James: https://blogs.msdn.microsoft.com/alexj/2009/06/02/tip-22-how-to-make-include-really-include/

Наш старый код, которыйбыл основан на коде Entity Framework Database First, который имел код, подобный следующему:

 var results =
         ((from post in ctx.Posts
         from blog in post.Blogs
         where blog.Owner.EmailAddress == “alexj@microsoft.com”
         select post) as ObjectQuery<Post>).Include(“Comments”);

Однако, поскольку мы перешли на подход Code First, вышеупомянутый пост выдаст следующую ошибку:

Object reference not set to an instance of an object.

Похоже, возникла какая-то проблема, возникшая при переходе от кода базы данных Entity Framework к первому коду

Мы изменили код так, чтобы он выглядел следующим образом:

var results =
        (from post in ctx.Posts.Include(“Comments”)
        from blog in post.Blogs
        where blog.Owner.EmailAddress == “alexj@microsoft.com”
        select post);

Однако комментарии, связанные с сущностями Post (т. Е. Свойство Navigation из набора комментариев), не будут «загруженными», что проблематично, поскольку довыдаст следующую ошибку:

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

Может кто-нибудь сказать мне, как мы можем изменить код, чтобы он работал правильно для подхода Entity Framework Code First?

1 Ответ

0 голосов
/ 25 мая 2018

Ссылка: Как я могу преобразовать DBQuery в ObjectQuery ?

@ ladislav-mrnka состояния: "

DbQuery содержит метод Includeпоэтому вам не нужно конвертировать в ObjectQuery. ObjectQuery недоступен из экземпляра DbQuery - он заключен во внутренний тип InternalQuery и оператор преобразования не определен.

Кстати, при добавлении с использованием System.Data.Entityи по ссылке CTP5 вы сможете звонить Включить на IQueryable! "

...