2016-09-16 53 views
0

我需要通過實體框架代碼優先創建一個複雜的值,其中包括三個以下三個值。使用實體框架代碼優先創建一個複雜的主鍵

  • A爲常數的部分看起來像 「S#34」
  • B是浮動和它的值從API web服務
  • Ç來是自然數!

我想C自動生成。在一個例子中,我們有這些ID:

+-----+------+--+ 
|A |B  |C | 
+-----+------+--+ 
|s#34 |67889 |1 | 
|s#34 |68988 |2 | 
|s#34 |87665 |3 | 
|s#34 |35458 |4 | 
|s#34 |..... |5 | 
... 

我正在尋找這樣的代碼:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
[ID = "string1" + "string2" + default.ToString()] 
public int ID { get; set; } 

從「默認」代碼回來,從(DatabaseGeneratedOption獲得的價值我平均.Identity)。

謝謝你的幫助

+0

向我們展示你試過了什麼?你在哪裏具體問題?您可以通過'identity'或'sequence'生成'C'值,''A'您可以在代碼中硬編碼,'B'只是您從web服務中獲取的一個普通變量。 –

+0

我的問題是關於自動發電機!我不想檢查數據庫中的最後一個實體ID來創建一個新行我想使用DataAnnotations能力如下所示:「[DatabaseGenerated(DatabaseGeneratedOption)」 –

+0

您可以使用SQL Server自定義標識列來實現此目標...請參閱此處: http://stackoverflow.com/questions/2177584/sqlserver-identity-column-with-text –

回答

0

把所有三條信息拼湊成一個字段違反單一責任原則。您應該創建一個composite key,然後在computed column中合併,如果需要連接三列進行顯示。

+0

我正在尋找這樣的代碼: [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [ID =「string1」+ 「string2」+ default.ToString()] public int ID {get;組; } 我的意思是從代碼中的「default」返回到從(DatabaseGeneratedOption.Identity)得到的值。 –