我有一个包含财产价值的实体。该值有时是数字(int)或有时是字符串。
例如: 我有实体CarSpecification:
public class CarSpecification : BaseEntity
{
public virtual Car Car{ get; set; }
public virtual Specification Specification { get; set; }
public double Value { get; set; }
}
这指的是汽车和名称为“drive”且值为“全轮驱动”的规格。
它也指同一辆车和名称为“doorCount”和值2的规格。
某些值可能会发生多次。
规格实体:
public class Specification : BaseEntity
{
public string Name { get; set; }
public virtual Measure Measure { get; set; }
public virtual ICollection<ComponentSpecification> ComponentSpecifications { get; set; }
}
答案 0 :(得分:1)
事实上,有3个选项:
1)将值存储在字符串列中,并附加列value_type
;
2)将值存储在单独的列中(如string_value
,int_value
)。这可以使用或不使用value_type
列来完成;
3)为值创建类层次结构。类似的东西:
public abstract class Value { }
public class StringValue : Value {}
public class IntValue : Value {}
显然,对于2和3,您需要存储的类型越多,您需要维护的列/类型就越多。选项3我只考虑您是否需要存储一些外来值类型,这需要处理一些额外的数据,因为它最昂贵 - 即使在TPH情况下,这是查询的附加表+ JOIN
。
我投票给1,因为它很简单。您唯一需要关注的是从字符串转换为的格式设置。