最初に EF 4.1 コードを使用して、データベース モデル クラスを定義します。次のコードを見てください。
public abstract class TableElement
{
public Guid ID { get; set; }
// and other common properties
}
public class Row : TableElement
{
public double? Width { get; set; }
public double? Height { get; set; }
public ICollection<Cell> Cells { get; set; }
}
public class Cell : TableElement
{
public double? CellWidth { get; set; }
public double? CellHeight { get; set; }
public virtual Row ParentRow { get; set; }
}
クラスRowからクラスCellのいくつかのプロパティを部分的/選択的に継承したい(CellをRowから駆動していることに注意してください)。アイデアは、ローカルのオーバーライドがない限り、Row クラスで Cells の子のいくつかのプロパティを制御/変更することです。私はこのコードを使用して仕事をします:
public class Cell : TableElement
{
public double? CellWidth { get; set; }
[NotMapped]
public double? Width
{
get { return CellWidth ?? ParentRow.Width; }
set { CellWidth = value; }
}
public double? CellHeight { get; set; }
[NotMapped]
public double? Height
{
get { return CellHeight ?? ParentRow.Height; }
set { CellHeight = value; }
}
public virtual Row ParentRow { get; set; }
}
私の実際のプロジェクトの一部のプロパティは複雑な型であり、Nullable ではないため、これが最善の方法であるかどうかはわかりません (ただし、回避策があります)。とにかく、私はこれに他のアイデアをいただければ幸いです。