2016-01-13 36 views
1

我有一個實體屬性值contians。該值有時是數字(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; } 
    } 
+0

你的意思是說,'CarSpecification.Value'可以存儲數字或字符串嗎? – Dennis

+0

是的,這正是我的意思。 – thierryiseli

回答

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票,因爲它很簡單。你需要關心的唯一事情是從字符串轉換爲of時的格式設置。

+0

謝謝!我選擇第一個選項。 – thierryiseli

相關問題