Lors de l'utilisation d'EF Core pour interroger MySQL en C#, le nom de la colonne de clé primaire est incorrect
P粉736935587
2023-08-17 13:45:14
<p>J'apprends à interroger une base de données Mysql en C#, mais j'obtiens une erreur indiquant qu'il y a une colonne non valide dans la liste des colonnes, mais je n'arrive pas à comprendre d'où vient ce nom de colonne (ToDoId) depuis. </p>
<p>Il n'y a que deux colonnes dans le tableau (modèle présenté ci-dessous) et la clé primaire dans MySQL est <code>Id</code>. D'où vient ce <code>ToDoId</code> et comment puis-je le forcer à devenir <code>Id</code> ? </p>
<p>J'ai regardé tous les exemples de code (à partir d'ici) et je pense avoir tout mis à jour pour ajouter correctement ma nouvelle table. </p>
<p>Voici mon modèle :</p>
<pre class="brush:php;toolbar:false;">classe publique ToDo
{
identifiant de guide public { get ; set }
chaîne publique ToDoName { get; set } = null !;
public ICollection<ToDo>
publicToDo()
{
ToDos = nouveau HashSet<ToDo>();
}
}</pré>
<p>C'est ici que j'obtiens l'erreur - dans la requête : </p>
<pre class="brush:php;toolbar:false;">classe publique ToDoRepository : IToDoRepository
{
privé en lecture seule DatabaseContext _context ;
public ToDoRepository (contexte DatabaseContext)
{
_context = contexte ;
}
// Le _context.ToDo suivant est défini comme : public virtual DbSet<ToDo>
public IQueryable<ToDo> Query =>
// L'erreur s'est produite ici...
public IReadOnlyList<ToDo>
.Lister();
}</pré>
<p>Message d'erreur : </p>
<blockquote>
<p>MySqlConnector.MySqlException : colonne inconnue 't.ToDoId' dans la 'liste de champs'</p>
</blockquote><p><br /></p>
Restez simple, utilisez EF conventions et renommez votre clé primaire en :
classNameID, donc dans votre cas :
Ou utilisez l'attribut Key comme décrit ici :
Suggestion amicale de nommer votre classe Todo