サブクラスを含むいるICollection構造のマテリアライズ。は、私はそれがパフォーマンスのベンチマークの間に際立っているので、EF 4日に書かれたいくつかのコードを見直してい
コードの目的は、Entity Frameworkの(私たちは、EF 6.1になりましたね)を使用してICollection<MyBaseClass>
を実体化することです。実際のタイプが格納されたデータベースから
public Parent
{
public virtual ICollection<MyBaseClass>() Base { get; set; }
}
を取得するときに特定のサブクラス中に存在する参照が実体化されていないため、コードが存在
はMyBaseClassのサブクラスです。
例のサブクラス:ICollection<MyBaseClass>() Base
は、いくつかの具体的なサブクラスのミックスが含まれていることを
var parent = ctx.Parents.Include(p => p.Base).Where(...).Single();
LoadSubclasses(parent.Base);
...
private void LoadSubclasses(IEnumerable<MyBaseClass> myBase)
{
foreach (var my in myBase)
{
if (my is SubA)
{
this.Entry(my).Reference("Ref1").Load();
this.Entry((SubA)my).Ref1).Collection("Options").Load();
}
else... // Similar for other subclasses
}
}
注:
public SubA : MyBaseClass
{
public virtual ICollection<Options> Ref1 { get; set; }
}
現在、コードはこのような何かを行います。 ICollection
には一般に数百のオブジェクトがあります。
Base
を具現するためのより効率的な方法はありますか?
あなたは[継承](HTTPSに関するいくつかのEFの記事をチェックしています。net/manavi/inheritance-mapping-strategies-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph)を使用していますか? –