Dapper.SimpleCRUD Insert / Update / Get falla con el mensaje "La entidad debe tener al menos una propiedad [Key]"

c# dapper dapper-extensions sql

Pregunta

Soy un bebé nuevo en Dapper. Intentando incorporar operaciones CRUD con Dapper y Dapper.SimpleCRUD lib. Aquí está el código de ejemplo...
Mi modelo de datos parece

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

Implementación Dapper - Insertar

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

Como ProdId en el Db es una columna de identidad, falla. ¿Cómo indica que ProdId es una columna de identidad en DB?

Implementación Dapper: Get

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

Da una excepción:

"¡La entidad debe tener al menos una propiedad [Key]"!

Respuesta aceptada

Esto está sucediendo ya que está utilizando una extensión Dapper, que ha implementado el método de extensión Insert CRUD. Idealmente, esto se puede lograr usando simples

con.Execute en el Dapper, pero dado que desea pasar un objeto y crear una consulta de inserción automáticamente por la extensión, necesita ayudarlo a comprender, que es la clave principal para la entidad del producto dado, la siguiente modificación ayudará:

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

donde el atributo clave se implementará en Dapper Extension o en el Component Model .

Alternativamente, puede cambiar el nombre de prodId a Id , que automáticamente lo convertirá en la clave. También verifique el siguiente enlace , donde puede crear un asignador por separado para la entidad, definiendo así la clave, lo que funcione en su caso


Respuesta popular

Al conectar con SQL Server 2016, tuve este error con Dapper.Contrib y Dapper.SimpleCRUD cuando olvidé adjuntar la clave principal a la columna Id de la tabla.

La clave principal se agregó a la tabla, el proyecto se reconstruyó y se publicó para borrar la caché y todo está bien con [Key] y [ExplicitKey] (este último en DapperContrib).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué