6

プロジェクトで EntityFramework POCO + プロキシ + 遅延読み込みを使用しています。Transaction今日、クラスの関連コレクションが(の代わりに) にRows具体化されているのを見て、かなり驚きました。コレクションの変更を追跡する必要があります。HashSetEntityCollectionEntityCollection

public class Transaction
{
    public virtual ICollection<TransactionRow> Rows { get; set; }
}

ただし、他のエンティティ クラスでは、関連するコレクションが に具体化されていEntityCollectionます。

Transactionthrough を読み込んObjectQueryでいるので、コンテキスト内にあるはずです。オブジェクトのプロキシも作成されます。

Entity Framework は、HashSet と EntityCollection のどちらを使用するかをどのように決定するのでしょうか。HashSet になるのはなぜですか?

4

1 に答える 1

2

変更追跡プロキシは、次の 2 つの条件が満たされた場合にのみ作成されます。

  • POCO クラスはパブリックであり、封印されておらず、抽象化されていません
  • 永続化されたすべてのプロパティ (getter と setter を使用) は仮想としてマークされます
于 2010-09-03T17:07:17.107 に答える