2016-09-16 5 views
0

Je dois créer une valeur complexe via Entity Framework code-first, qui comprend trois des trois valeurs suivantes.Création d'une clé primaire complexe à l'aide d'Entity Framework code-first

  • A est un aspect partiel constante comme "s # 34"
  • B est flottant et sa valeur proviennent d'une API WebService
  • C est nombre naturel!

Je veux générer C automatiquement. Dans un exemple, nous avons ces Ids:

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

Je suis à la recherche d'un code comme ceci:

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

ma moyenne de « défaut » dans le code de revenir à la valeur obtenir de (DatabaseGeneratedOption .Identité).

Merci pour votre aide

+0

Mind nous montrant ce que vous avez essayé? Où avez-vous des problèmes spécifiquement? La valeur 'C' que vous pouvez générer via' identity' ou 'sequence',' A' vous pouvez coder en dur dans votre code, tandis que 'B' est juste une variable normale que vous récupérez sur votre webservice. –

+0

ma question concerne le générateur automatique! Je ne veux pas vérifier l'ID de la dernière entité dans db pour créer une nouvelle ligne Je veux utiliser les capacités de DataAnnotations ressembler à: "[DatabaseGenerated (DatabaseGeneratedOption)" –

+0

Vous pouvez obtenir ceci en utilisant la colonne d'identité personnalisée de SQL Server ... http://stackoverflow.com/questions/2177584/sqlserver-identity-column-with-text –

Répondre

0

Gavage les trois éléments d'information dans un champ serait contraire au principe de responsabilité unique. Vous devez probablement créer un composite key, puis combiner dans un computed column si vous devez concaténer les trois colonnes pour l'affichage.

+0

Je recherche un code comme celui-ci: [DatabaseGenerated (DatabaseGeneratedOption.Identity)] [ID = "string1" + "string2" + default.ToString()] public int ID {get; ensemble; } mes moyennes de "default" dans le code reviennent à la valeur qui provient de (DatabaseGeneratedOption.Identity). –