选择性/部分继承(EF代码优先)

时间:2012-04-04 22:00:28

标签: entity-framework code-first

我首先使用EF 4.1 Code来定义我的数据库模型类。请查看以下代码:

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的一些属性(注意我从Row驱动Cell)。我的想法是我希望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(虽然有一种解决方法)。无论如何,我对此有任何其他想法。

0 个答案:

没有答案