bugfix> entity-framework > 投稿

当社には、以下を使用するソフトウェアアプリケーションがあります。

-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 Database FirstコードからCode Firstに移行したときに発生した何らかの問題のようです

コードを次のように変更しました。

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

ただし、コメントに関連付けられたPostエンティティ(つまり、コメントのコレクションのナビゲーションプロパティ)は "Eager Loaded"ではありません。これは、tillが次のエラーをスローするため問題があります。

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

Entity Framework Code Firstアプローチで適切に動作するようにコードを変更する方法を教えてください。

回答 1 件
  • リファレンス:DBQueryをObjectQueryに変換するにはどうすればよいですか?

    @ ladislav-mrnkaの状態: "

    DbQueryにはIncludeメソッドが含まれているため、ObjectQueryに変換する必要はありません。 ObjectQueryはDbQueryインスタンスからアクセスできません-内部型InternalQueryにラップされており、変換演算子は定義されていません。

    ところでSystem.Data.Entityとrefrence CTP5を使用して追加すると、IQueryableでIncludeを呼び出すことができます! 」

あなたの答え