你可以使用繼承來做到這一點。如果你已經考慮過了,我很抱歉。代碼如下。
public abstract class WidgetBase
{
public string Name { get; set; }
}
public class SweetWidget : WidgetBase
{
public int SweetnessFactor { get; set; }
}
public class SourWidget : WidgetBase
{
public int Sourness { get; set; }
}
然後在你的車型配置,你這樣做:
const string discriminator = "WidgetType";
Map<SweetWidget>(mc => mc.Requires(discriminator).HasValue("Sweet"));
Map<SourWidget>(mc => mc.Requires(discriminator).HasValue("Sour"));
您需要添加一列, 「WidgetType」,你的表。 EF將按照映射中指定的方式填充它。
請注意,基類必須是抽象的。只要你的表包含所有派生類的所有字段,這就是你如何在EF Code First中執行Table Per Hierarchy。
相關鏈接:http://entityframework.codeplex.com/discussions/401339 –