实体属性值,可以是数字或字符串,我该如何处理?

时间:2016-01-13 12:08:08

标签: c# .net entity-framework entity

我有一个包含财产价值的实体。该值有时是数字(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; }
    }

1 个答案:

答案 0 :(得分:1)

事实上,有3个选项:

1)将值存储在字符串列中,并附加列value_type;
 2)将值存储在单独的列中(如string_valueint_value)。这可以使用或不使用value_type列来完成;
 3)为值创建类层次结构。类似的东西:

public abstract class Value { }
public class StringValue : Value {}
public class IntValue : Value {}

显然,对于2和3,您需要存储的类型越多,您需要维护的列/类型就越多。选项3我只考虑您是否需要存储一些外来值类型,这需要处理一些额外的数据,因为它最昂贵 - 即使在TPH情况下,这是查询的附加表+ JOIN

我投票给1,因为它很简单。您唯一需要关注的是从字符串转换为的格式设置。