我有一个实体来确认财产的价值。这个值有时是数字(int),有时是字符串。
例如:我有一个实体CarSpecification:
public class CarSpecification : BaseEntity
{
public virtual Car Car{ get; set; }
public virtual Specification Specification { get; set; }
public double Value { get; set; }
}这指的是汽车和规格的名称“驱动器”和价值“全轮驱动”。
它还引用了同一辆车,以及名称为"doorCount“和值2的规范。
某些值可能会发生几次,这可能是事实。
规范实体:
public class Specification : BaseEntity
{
public string Name { get; set; }
public virtual Measure Measure { get; set; }
public virtual ICollection<ComponentSpecification> ComponentSpecifications { get; set; }
}发布于 2016-01-13 12:26:54
事实上,有三种选择:
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票,因为这很简单。您需要注意的唯一一件事是,在从字符串转换到of时,需要设置格式设置。
https://stackoverflow.com/questions/34766318
复制相似问题