私たちはゼロから開発しているのでEntity Framework 6.1
、MVCアプリケーションでcode-first
andtable-per-hierarchy
アプローチを使用しており、この方法は迅速な開発に適していると考えています。しかし、ここで質問があります。1 つの基本クラスと 3 つのサブクラスがあるとします。これらは次のようになります。
public class BaseClass
{
public int ID { get; set; }
public string Name { get; set; }
}
public class SubClassOne : BaseClass
{
public double Volume { get; set; }
}
public class SubClassTwo : BaseClass
{
public double Volume { get; set; }
}
public class SubClassThree : BaseClass
{
public int Number { get; set; }
}
既定の設定を使用する場合、EF はデータベース テーブルに 6 つの列を作成します: ID、名前、ボリューム、ボリューム 1、番号、ディスクリミネーター。Volume 列は SubClassOne にのみ使用され、Volume1 は SubClassTwo にのみ使用され、Number は SubClassThree にのみ使用されます。
データベースの行スペースの「無駄」についてはあまり気にしません。しかし、ここで私を悩ませていることが 1 つあります。私が新しい開発者で、データベースを直接見ている場合、「Volume」と「Volume1」の名前に混乱してしまいます。コード側には SubClassOne と SubClassTwo があり、どちらにも「Volume」という名前のプロパティがあることを知っています。しかし、どの列がどのクラスのものかはわかりませんでした。だから私の質問は、データベース内の列にSubClassOne.Volume
との両方SubClassTwo.Volume
がマップされていることを Entity Framework (たとえば、属性を使用して) に指示する方法はありますか? Volume
(別の利点は、1 つの列を減らすことですが、それは私の主な目標ではありません)。
Entity Framework、code-first、または table-per-hierarchy を使用せず、テーブル、特に DAL を自分で設計すれば、完全に制御してこれを達成できると思います。しかし、今はどうですか?