2016-09-16 59 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)得到的值。 –

相关问题