私はDBContextを使用しており、プロパティがすべて仮想である2つのクラスがあります。デバッガーで、コンテキストを照会するとプロキシオブジェクトを取得していることがわかります。ただし、コレクションプロパティに追加しようとすると、コレクションプロパティはまだnullです。プロキシはコレクションが初期化されることを保証すると思いました。
私のPocoオブジェクトはそのデータコンテキストの外で使用できるため、コンストラクターでコレクションがnullであるかどうかのチェックを追加し、必要に応じて作成します。
public class DanceStyle
{
public DanceStyle()
{
if (DanceEvents == null)
{
DanceEvents = new Collection<DanceEvent>();
}
}
...
public virtual ICollection<DanceEvent> DanceEvents { get; set; }
}
これはデータコンテキスト外で機能しますが、クエリを使用してオブジェクトを取得すると、テストはtrueですが、設定しようとすると、次の例外が発生します。'DanceStyle_B6089AE40D178593955F1328A70EAA3D8F0F01DDE9F9FBD615F60A34F9178B94'のプロパティ'コレクションはすでにEntityCollectionに設定されています。
nullで追加できないことはわかりますが、プロキシがすでに設定されていると言っているため、コレクションに設定することもできません。そのため使用できません。よくわかりません。
DanceEventクラスは次のとおりです。
public class DanceEvent
{
public DanceEvent()
{
if (DanceStyles == null)
{
DanceStyles = new Collection<DanceStyle>();
}
}
...
public virtual ICollection<DanceStyle> DanceStyles { get; set; }
}
上記のコードから他の値型プロパティを省略しました。コンテキストクラス内のこれらのクラスに対する他のマッピングはありません。