2

次のエンティティがあるとします。

public class Post
{
    public int Id { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
}

データベースから Post オブジェクトを取得するときは、Commentsコレクションをに変換する必要があります。EntityCollection<T>これにより、データが熱心に読み込まれたかどうかなど、コレクションに関する EF4 関連データを確認できます。

ICollection<T>残念ながら、 からに直接キャストしようとすると、プロパティが であり、に変換できないEntityCollection<T>ため、例外が発生します。CommentsSystem.Collections.Generic.List<T>EntityCollection<T>

では、コード ファーストを使用する場合、コレクションに関する EF 情報を取得するにはどうすればよいでしょうか。

4

2 に答える 2

2

これはコメントとしてより適切かもしれませんが、EF4 の第一人者がこれに応答し、何が起こっているのかを説明してくれることを願っています。少し前に、CTP4 で以下の質問をしました。EF 4 レシピの作成者からの 1 つの回答は、コレクションが virtual および ICollection として宣言されている場合、実行時にコレクションが EntityCollection として作成されるというものでした (質問者は明らかにそうしています)。

また、Rowan Miller (EF4 チームのメンバー) は、より高度なオプションを作成しました。何が起きてる?現在の CTP はこれをサポートしていませんが、以前のものはサポートしていますか?

CTP4 Code First での CreateSourceQuery の使用

于 2011-02-17T23:58:10.367 に答える
0

POCO クラスが変更追跡プロキシ作成の要件を満たしている限り、プロキシは ICollection プロパティを EntityCollection オブジェクトに置き換えます。一見すると、クラスはこれらの要件を満たしていますが、ProxyCreationEnabled オプションが true に設定されていることも確認する必要があります。

于 2012-03-28T19:06:00.610 に答える