2011-04-10 3 views
1

J'ai une classe POCO suivanteAutogénérer clé primaire (Guid) Entity Framework CTP5

public class Account 
    { 
     [Key,DatabaseGenerated(DatabaseGenerationOption.Identity)] 
     public string AccountId { set; get; } 

     public string FirstName { set; get; } 

     public string LastName { set; get; } 

     public string Email { set; get; } 


    } 

je reçois l'exception suivante lorsque la base de données est créée

Identity column 'AccountId' must be of data type int, bigint, smallint, tinyint, or decimal or numeric with a scale of 0, and constrained to be nonnullable. 
+0

Remarque: Cela se produit également si vous utilisez le nom de colonne d'identité "réservé" dans votre classe de modèle, même si vous avez '[Key, DatabaseGenerated (...)]' dessus - vous devez "renommer" "votre propriété d'identité dans votre modèle à quelque chose d'autre, comme dans ce cas," AccountId ". – rdev5

Répondre

8

Si vous n'avez pas:

[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid AccountId { set; get; } 

?

+0

Exactement ... j'ai par hasard typé chaîne ... dès que je l'ai changé pour Guid ça a fonctionné .... merci –

0

son comme vous devez mettre à jour votre AccountId propriété de chaîne à l'un des types de données mentionnés dans l'exception:

int, bigint, smallint, tinyint, ou décimal ou numérique avec une échelle de 0, et contraint à être nonnulla ble

Une raison pour laquelle c'est maintenant une chaîne?

+0

il n'y a pas de raison particulière ... c'était un par erreur ... –

3

La réponse de Jeff est juste. Juste un petit conseil pour vous. En utilisant EF6 j'ai écrit la configuration suivante afin de définir tous les champs avec le nom "Id" et tapez "Guid" comme identité. Je n'ai pas besoin d'écrire [DatabaseGenerated(DatabaseGenerationOption.Identity)] à chaque fois.

Questions connexes