stored framework c# orm dapper

c# - framework - idbconnection dapper



RealizaciĆ³n de inserciones y actualizaciones con Dapper (4)

Estamos buscando construir algunos ayudantes, aún decidir sobre las API y si esto va en el núcleo o no. Consulte: https://code.google.com/archive/p/dapper-dot-net/issues/6 para ver el progreso.

Mientras tanto, puedes hacer lo siguiente

val = "my value"; cnn.Execute("insert Table(val) values(@val)", new {val}); cnn.Execute("update Table set val = @val where Id = @id", new {val, id = 1});

etcétera

Ver también la publicación de mi blog: ese molesto problema INSERT

Actualizar

Como se señala en los comentarios, ahora hay varias extensiones disponibles en el proyecto github.com/StackExchange/dapper-dot-net/tree/master/… en la forma de estos métodos de extensión IDbConnection :

T Get<T>(id); IEnumerable<T> GetAll<T>(); int Insert<T>(T obj); int Insert<T>(Enumerable<T> list); bool Update<T>(T obj); bool Update<T>(Enumerable<T> list); bool Delete<T>(T obj); bool Delete<T>(Enumerable<T> list); bool DeleteAll<T>();

Estoy interesado en usar Dapper, pero por lo que puedo decir, solo admite Query y Execute. No veo que Dapper incluya una forma de insertar y actualizar objetos.

Dado que nuestro proyecto (¿la mayoría de los proyectos?) Necesita hacer inserciones y actualizaciones, ¿cuál es la mejor práctica para hacer Inserciones y actualizaciones junto con Dapper?

Preferiblemente, no tendríamos que recurrir al método ADO.NET de creación de parámetros, etc.

La mejor respuesta que puedo encontrar en este momento es usar LinqToSQL para inserciones y actualizaciones. ¿Hay una mejor respuesta?


Realizar operaciones CRUD usando Dapper es una tarea fácil. He mencionado los ejemplos a continuación que deberían ayudarlo en las operaciones CRUD.

Código para C RUD:

Método n. ° 1: este método se usa cuando inserta valores de diferentes entidades.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString)) { string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)"; var result = db.Execute(insertQuery, new { customerModel.FirstName, customerModel.LastName, StateModel.State, CityModel.City, isActive, CreatedOn = DateTime.Now }); }

Método n.º 2: este método se utiliza cuando las propiedades de su entidad tienen los mismos nombres que las columnas SQL. Por lo tanto, Dapper es un ORM asigna las propiedades de la entidad con las columnas SQL correspondientes.

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString)) { string insertQuery = @"INSERT INTO [dbo].[Customer]([FirstName], [LastName], [State], [City], [IsActive], [CreatedOn]) VALUES (@FirstName, @LastName, @State, @City, @IsActive, @CreatedOn)"; var result = db.Execute(insertQuery, customerViewModel); }

Código para C R UD:

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString)) { string selectQuery = @"SELECT * FROM [dbo].[Customer] WHERE FirstName = @FirstName"; var result = db.Query(selectQuery, new { customerModel.FirstName }); }

Código para CR U D:

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString)) { string updateQuery = @"UPDATE [dbo].[Customer] SET IsActive = @IsActive WHERE FirstName = @FirstName AND LastName = @LastName"; var result = db.Execute(updateQuery, new { isActive, customerModel.FirstName, customerModel.LastName }); }

Código para CRU D :

using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myDbConnection"].ConnectionString)) { string deleteQuery = @"DELETE FROM [dbo].[Customer] WHERE FirstName = @FirstName AND LastName = @LastName"; var result = db.Execute(deleteQuery, new { customerModel.FirstName, customerModel.LastName }); }


Usar Dapper.Contrib es tan simple como esto:

Insertar lista

public int Insert(IEnumerable<YourClass> yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); return conn.Insert(yourClass) ; } }

Insertar solo:

public int Insert(YourClass yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); return conn.Insert(yourClass) ; } }

Lista de actualizacion:

public bool Update(IEnumerable<YourClass> yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); return conn.Update(yourClass) ; } }

Actualizar solo:

public bool Update(YourClass yourClass) { using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); return conn.Update(yourClass) ; } }

Fuente: https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib


puedes hacerlo de esa manera:

sqlConnection.Open(); string sqlQuery = "INSERT INTO [dbo].[Customer]([FirstName],[LastName],[Address],[City]) VALUES (@FirstName,@LastName,@Address,@City)"; sqlConnection.Execute(sqlQuery, new { customerEntity.FirstName, customerEntity.LastName, customerEntity.Address, customerEntity.City }); sqlConnection.Close();