Problème d'entité avec EntityFramework et MySQL

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,

J’ai un problème lors de la compilation de mon code, on me retourne une erreur:

JabboCMS.Models.User: : EntityType ’User’ has no key defined. Define the key for this EntityType.

Users: EntityType: EntitySet ’Users’ is based on type ’User’ that has no keys defined.

Sur cette ligne:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    [Authorize]
    public class HomeController : Controller
    {
        private ApplicationDbContext database = ApplicationDbContext.Create();

        // GET: Home/Index
        [AllowAnonymous]
        public ActionResult Index()
        {
            List<User> users = database.Users.ToList(); // Erreur apparue ici

            return View();
        }
    }

Mon modèle ressemble à ceci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    [Table("users")]
    public class User
    {
        [Column("id")]
        [Key]
        public uint Id { get; set; }

        [Column("username")]
        public string Username { get; set; }
    }

Et mon context à ceci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext() : base("MySQL")
        {
            this.Configuration.LazyLoadingEnabled = false;
        }

        public DbSet<User> Users { get; set; }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }

Je vous avoue que pour le coup je suis totalement perdu, après de multiple recherches, j’ai l’impression d’avoir bien fait, mais apparemment visual studio ne l’entends pas de cette oreille.

+0 -0

Salut,

La première chose que je te conseille c’est d’ajouter l’annotation [DatabaseGenerated(DatabaseGeneratedOption.IDENTITY)] à ton champ ID pour t’assurer que ça soit bien pris en compte.

Ensuite, peux-tu vérifier que la classe User que tu utilises dans ton ApplicationDbContext est bien la classe perso que tu as créée et non une classe de C# que tu aurais importée par mégarde?

+0 -0
Auteur du sujet

Cette réponse a aidé l’auteur du sujet

Salut, je viens à l’instant de trouver le problème, la résolution du problème dans mon cas était de remplacer:

1
public uint Id { get; set; }

par

1
public int Id { get; set; }

Édité par JordanSocyalize

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte