0
votes

Système d'erreur ASP.NET.InvalidoperationException

J'essaie de faire une demande où je peux gérer les clients. J'ai donc créé la base de données et la table Tecnici où je peux insérer tous mes techniciens.

Toutes les opérations de crud fonctionnaient jusqu'à ce que je crée la table client code> pour insérer mes clients. J'ai effectué le contrôleur, le modèle et la visualisation de client code>, et quand j'exécute l'application, cela me donne cette erreur System.InvalidoperationException: "La clientèle" de type d'entité nécessite une clé primaire à définir. Si vous aviez l'intention d'utiliser un appel de type d'entité sans clé 'Hasnokey ()'. ' Strong> p>

Erreur dans le clientIcontroller me gaver la même erreur lorsque j'essaie de charger tous les clients FTOM Table CLIENTI CODE> Errore dans Tecnicicontroller P>

Ceci est code pour clientIcontroller P>

public class AppDbContext: DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options): base (options)
        {

        }

        public DbSet<Tecnico> tboTecnici { get; set; }
        public DbSet<Cliente> tboClienti { get; set; }
    }


3 commentaires

Vous n'avez pas de clé primaire définie pour votre entité. Utilisez-vous la première approche du code?


J'ai la clé primaire. Je viens de mettre à jour ma question avec la photo de mes tables i.Stack.imgur.com/kk2wd.png < / a>


Ouais, mais EF ne sait pas quelle propriété est votre clé principale. Vous devez le spécifier


4 Réponses :


1
votes

Essayez de définir une clé primaire dans votre classe client.

[Key]
public int Id { get; set; }


2 commentaires

Mais mon identifiant est la clé principale incrément automatique . Je ne veux pas que l'utilisateur insère l'identifiant


L'utilisateur n'a pas d'influence sur la propriété ID, utilisez simplement l'ID ProP en tant que champ caché à votre vue.



1
votes

Comme le texte d'exception indique que vous devez définir une clé primaire ou dire explicitement que ce tableau n'a pas de clé primaire.

Je vous suggère de faire une clé comme xxx p> ou avec un GUID au lieu de l'entier - qui présente l'avantage que les GUID peuvent être générés avant de sauvegarder, mais il est moins lisible qu'un nombre - comme vous le souhaitez. xxx


2 commentaires

[Touche] ID GUID PUBLIC {GET; SET;} Je ne devrais-je ajouter que dans le modèle Tecnici? Parce que quand je l'insère dans le modèle, il me gave la même erreur.


Vous devez ajouter le champ ID à la table DB actuelle, ainsi que le modèle qui le représente. Assurez-vous que les types correspondent (par ex. "GUID" dans le modèle "UnicalidInder" dans un DB SQL Server, si c'est ce que vous utilisez).



1
votes

Vous devez spécifier que la colonne ID est votre clé principale et spécifie également l'automation incrémentée par le serveur SQL xxx

de cette façon une fois que vous enregistrez votre Entité to the Base de données, le ID sera automatiquement rempli avec la nouvelle valeur générée


0 commentaires

0
votes

Si vous faites face à cette erreur et que l'attribut [Key] n'a pas résolu le problème.

Vous pouvez essayer d'inclure la fonction de commande de colonne. Cela résout EntityType d'aucune clé de définition de clé. P>

[Key]
[Column(Order = 1)]
public int Id { get; set; } 


0 commentaires