0

最初に 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 ではないため、これが最善の方法であるかどうかはわかりません (ただし、回避策があります)。とにかく、私はこれに他のアイデアをいただければ幸いです。

4

0 に答える 0