我首先使用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(虽然有一种解决方法)。无论如何,我对此有任何其他想法。