Problème d'entité avec EntityFramework et MySQL

a marqué ce sujet comme résolu.

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.

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?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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