私はこの例では、ビューに表示することができ二つの異なるオブジェクトタイプは、3つのクラス複数(潜在的にnull)のナビゲーションプロパティを処理する最善の方法は何ですか?
public class ActivityLog
{
// The activity log affects an employee
public int EmployeeID { get; set; }
public Employee Employee { get; set; }
// The activity log affects a department
public int DepartmentID { get; set; }
public Department Department { get; set; }
}
があるしているが、実際には異なるより多くの種類があり、どのために、それは理にかなっていないようですそれを独自の継承モデルに移動します。
私は以下を行うことができるようにしたいと思います:
public class ActivityLog<T>
{
// The activity log affects an unknown type
public T ConcernedObjectID { get; set; }
public T ConcernedObject { get; set; }
}
は、今、私たちは(従業員がnullの場合、部門を使用)我々の見解ではnullチェックの多くを持っています。
これは、エンティティフレームワークが何とか役立つものか、コードのみのソリューション(たとえば、インタフェース)を実装するのが最善でしょうか?
最適化する可能性のあるクエリは何ですか? –
これはかなり広いトピックですが、ここには多くの回答があります。主な質問は、特定の 'ActivityLog'オブジェクトが**常に**同じオブジェクトを参照するかどうか、または同じ' ActivityLog'オブジェクトが部門と従業員の両方に使用できるかどうかです。私はこれが前者であると考えています(1つのアクティビティログは常に同じオブジェクトを扱います)。これは 'ActivityLog'コードを一般化するのに役立つすべての必要なクラス(人、部署、...)の間の共有インターフェイスを実装することを示唆しています。 – Flater
_ "しかし、実際には相違する種類があり、それを独自の継承モデルに移すのは賢明ではないようです。" _なぜあなたはこれが正しいと思いますか?私はその反対を主張するだろう。 **より多くの**クラスがあります。**より高い** **継承またはインターフェースの実装を通じた一般化されたアプローチの必要性。これは、手動で行う必要がある余分なクラスごとに大幅に増加します毎回コード。 – Flater