Taquigrafía con Dapper - sin especificar columnas

c# dapper database-connection sql sql-server

Pregunta

¿Hay alguna manera de hacer un inserto de taquigrafía con dapper, sin especificar todas las columnas? Solo quiero pasar un solo objeto o una lista de objetos. Todos los nombres de mis modelos coinciden con los nombres de mi tabla en db.

Estoy creando una función que copia una entidad de otra y no quiero especificar columnas porque la administración del código será mínima si se agrega otro campo en el futuro.

es decir

StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT *");
sql.AppendLine("FROM Product ");
sql.AppendLine("WHERE Id = @Id");
Product source = connection.Query<Product>(sqlCopy.ToString(), 
    new
    {
        Id = productId
    }, transaction).SingleOrDefault();


// INSERT source entity here without specifying INSERT INTO (COLUMNS)

Respuesta popular

¿Ha intentado usar Dapper.SimplerCRUD ( https://github.com/ericdc1/Dapper.SimpleCRUD ) o Dapper.Contrib ( https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib )?

Insertar Dapper.SimplerCRUD (del ejemplo de github):

public static int Insert(this IDbConnection connection, object entityToInsert)

Ejemplo de uso:

[Table("Users")]
public class User
{
   [Key]
   public int UserId { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public int Age { get; set; }

  //Additional properties not in database
  [Editable(false)]
  public string FullName { get { return string.Format("{0} {1}", FirstName, LastName); } }
   public List<User> Friends { get; set; }
   [ReadOnly(true)]
   public DateTime CreatedDate { get; set; }
}

var newId = connection.Insert(new User { FirstName = "User", LastName = "Person",  Age = 10 });  

Contrib (del ejemplo de github): Insertar métodos

Insertar una entidad

connection.Insert(new Car { Name = "Volvo" });

o una lista de entidades.

connection.Insert(cars);


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é