我首先使用 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 的一些属性(注意我是从 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(虽然有一个解决方法)。无论如何,我会很感激对此的任何其他想法。