Entity Framework EntityType 'UserAccount' n'a pas de clé
J'obtiens l'erreur suivante:
One or more validation errors were detected during model generation:
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'UserAccount' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'UserAccounts' is based on type 'UserAccount' that has no keys defined.
Cette erreur est déclenchée par le code:
_Db.Database.Initialize(true);
Je suppose que c'est de ne pas reprendre la Touche [] attribut du modèle pour une raison quelconque. À l'origine, lorsque j'ai tenté d'exécuter le code que je n'avais pas ajouté l'attribut de clé, cela pourrait-il signifier que quelque chose a été créé /mis en cache qui est de la prévention de cette clé?
La MVC4 projet est presque vide de l'installation de côté de, y compris Entity Framework 5
Modèle Code
public class AccountContext: DbContext
{
public AccountContext()
: base("DefaultConnection")
{
}
public DbSet<UserAccount> UserAccounts { get; set; }
}
[Table("UserAccount")]
public class UserAccount
{
[Key]
[Required]
public string Username;
[Required]
[DataType(DataType.Password)]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
public string Password;
public string Name;
public string Surname;
[Required]
public string Email;
}
Mondiale.asax Initialisation
Database.SetInitializer(new DropCreateDatabaseAlways<AccountContext>());
var _Db = new AccountContext();
_Db.Database.Initialize(true);
Je l'ai déjà fait quelques recherches et comprendre les conventions de nommage: Id /nom d'utilisateur etc. Cependant, j'aimerais utiliser de manière explicite [Key] et appelez le champ nom d'utilisateur.
OriginalL'auteur Jack | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Je crois EF seule permet la cartographie de propriétés, pas de champs que vous avez utilisé.
Essayez de changer:
à
Ne fonctionne pas pour moi. J'ai un "public UInt64 Id { get; set;} la propriété" avec à la fois la Touche [] et [Obligatoire] jeu, toujours le même message apparaît.
Ugh. Un "int" travaillé. facepalm
OriginalL'auteur StanK
Je tiens à ajouter que si vous arrive d'oublier de faire la cible de propriété de la clé publique, vous recevrez ce même message d'erreur. Je suis venu ici pour la même clé d'erreur et a remarqué que je navais pas le "public" de l'attribut. Je l'ai ajouté et mon erreur a disparu.
OriginalL'auteur Ray Goudie