Dapper.SimpleCRUD Insert / Update / Get échoue avec le message "L'entité doit avoir au moins une propriété [Key]"

c# dapper dapper-extensions sql

Question

Je suis un nouveau bébé à Dapper. Essayer d'intégrer les opérations CRUD avec la librairie Dapper et Dapper.SimpleCRUD. Voici l exemple de code...
Mon modèle de données ressemble à

Class Product
{
  public string prodId {get;set;}
  public string prodName {get;set;}
  public string Location {get;set;}
}

Dapper Implementation - Insert

public void Insert(Product item)
{
    using(var con = GetConnection())
    {
      con.Insert(item);
    }
}

Puisque le ProdId dans la base de données est une colonne d'identité, il échoue. Comment indique-t-il que ProdId est une colonne d'identité dans la base de données?

Implémentation Dapper - Get

public IEnumerable<Product> GetAll()
{
        IEnumerable<Product> item = null;
        using (var con = GetConnection())
        {
            item = con.GetList<Product>();
        }
        return item;
}

Il donne une exception:

"L'entité doit avoir au moins une propriété [clé]"!

Réponse acceptée

Cela se produit depuis que vous utilisez une extension Dapper, qui a implémenté la méthode d'extension Insert CRUD. Idéalement, cela peut être réalisé en utilisant simplement

con.Execute dans Dapper, mais comme vous voulez passer un objet et créer automatiquement une requête d'insertion par l'extension, vous devez l'aider à comprendre, qui est la clé primaire de l'entité produit donnée, les modifications suivantes faciliteront:

[Key]
public string prodId {get;set;}

où l'attribut clé doit être implémenté dans l' Dapper Extension ou le Component Model .

Vous pouvez également renommer prodId en Id , ce qui en fera automatiquement la clé. Vérifiez également le lien suivant, où vous pouvez créer un mappeur distinct pour l'entité, définissant ainsi la clé, peu importe ce qui fonctionne dans votre cas.


Réponse populaire

Lors de la connexion à SQL Server 2016, j'ai rencontré cette erreur avec Dapper.Contrib & Dapper.SimpleCRUD lorsque j'ai oublié de joindre la clé primaire à la colonne Id de la table.

La clé primaire ajoutée à la table, le projet reconstruit et publié pour effacer le cache et tout va bien avec [Key] et [ExplicitKey] (ce dernier dans DapperContrib).




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi