你可以使用继承来做到这一点。如果你已经考虑过了,我很抱歉。代码如下。
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 –