Parece que hay un proyecto DapperExtensions, pero también hay una clase SqlMapperExtensions en el proyecto Dapper. ¿Hay superposición? ¿Se prefiere uno sobre el otro? No puedo encontrar ninguna documentación sobre Dapper.Contrib.Dapper SqlMapperExtensions/Dapper.Contrib?
Respuesta
Dapper.Contrib
es el nombre de ensamblado: https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib
SqlMapperExtensions
es la clase estática que contiene los métodos contrib dentro Dapper.Contrib
: https://github.com/StackExchange/Dapper/blob/master/Dapper.Contrib/SqlMapperExtensions.cs
La mejor documentación es la clase de caso de prueba: https://github.com/StackExchange/Dapper/blob/master/Dapper.Tests.Contrib/TestSuite.cs
Creo user1003841 era refiriéndose al https://github.com/tmsmith/Dapper-Extensions.
Los autores son Thad Smith y Page Brooks, así que no es el trabajo de Sam Saffron. La página del proyecto dice "Esta biblioteca es un esfuerzo separado de Dapper.Contrib".
"Los autores son Thad Smith y Page Brooks, así que no es el trabajo de Sam Saffron". me hizo jajaja porque la respuesta original vino de – Terry
Escribí el primer Dapper.Contrib hace mucho tiempo después de un debate con Sam. No conozco los detalles del paquete Extensions y parecen hacer más o menos lo mismo con CRUD, pero el paquete Contrib puede ser algo más rápido en algunos escenarios porque tiene un caché integrado para ambas consultas y para la interfaz. POCOs con base con un seguimiento interno "sucio". Snipped de la prueba de código:
using (var connection = GetOpenConnection())
{
connection.Get<User>(3).IsNull();
var id = connection.Insert(new User {Name = "Adam", Age = 10});
//get a user with "isdirty" tracking
var user = connection.Get<IUser>(id);
user.Name.IsEqualTo("Adam");
connection.Update(user).IsEqualTo(false); //returns false if not updated, based on tracking
user.Name = "Bob";
connection.Update(user).IsEqualTo(true); //returns true if updated, based on tracking
user = connection.Get<IUser>(id);
user.Name.IsEqualTo("Bob");
//get a user with no tracking
var notrackedUser = connection.Get<User>(id);
notrackedUser.Name.IsEqualTo("Bob");
connection.Update(notrackedUser).IsEqualTo(true); //returns true, even though user was not changed
notrackedUser.Name = "Cecil";
connection.Update(notrackedUser).IsEqualTo(true);
connection.Get<User>(id).Name.IsEqualTo("Cecil");
connection.Query<User>("select * from Users").Count().IsEqualTo(1);
connection.Delete(user).IsEqualTo(true);
connection.Query<User>("select * from Users").Count().IsEqualTo(0);
connection.Update(notrackedUser).IsEqualTo(false); //returns false, user not found
Contrib no tiene el buen sistema de predicado mirando el cual tiene extensiones. NOTA hay un buen hilo en Dapper.Contrib aquí Dapper.Rainbow VS Dapper.Contrib
Estoy seguro de que me falta algo tonto y obvio, pero me aparece "el usuario no contiene una definición para IsNull" en la línea 3. ¿De dónde viene IsNull? Gracias. – niico
también tiene un enlace a la lista completa de este código? – niico
El método IsNull() es simplemente un método de prueba simple que se incluye en Dapper-source en GitHub –
- 1. conversión de Dapper TinyInt
- 2. Dapper ORM Objetos anidados
- 3. Dapper sencilla mapeo
- 4. Dapper and In Condition
- 5. Dapper con MVCMiniProfiler
- 6. Dapper (connection.Query o connection.Execute)
- 7. Restaurar caché para Dapper
- 8. Dapper Edición Multi-mapeo
- 9. Dapper mapeo mapeo intermedia
- 10. Dapper - como operador utilizando DynamicParameters
- 11. Aclaración de Dapper Ejemplo Código
- 12. Dapper ORM paginación y clasificación
- 13. Asignación de SqlGeography con Dapper
- 14. dapper nuget 1.7 enumeración enums
- 15. ¿hay una ExecuteScalar en Dapper
- 16. Acceso a Mysql usando dapper
- 17. transacción con dapper dot net
- 18. Dapper Objeto correcta/balasto Mapeo
- 19. Dapper dot net query en F #
- 20. de asignación de entidades en Dapper
- 21. ASP.NET MVC Administre SQLConnection con Dapper
- 22. escritura Dapper consultas para anidada Objetos
- 23. ¿Llamar al constructor personalizado con Dapper?
- 24. Cómo pasar un parámetro nulo con Dapper
- 25. Cadena de mapa para guid con Dapper
- 26. Cláusula LIKE parametrizada en una declaración SQL usando Dapper
- 27. Dapper - Mapeo de múltiples con un único valor de retorno
- 28. puede Dapper implementar múltiples eliminar insertar o actualizar como QueryMultiple?
- 29. ¿Cómo obtener valores para objetos secundarios utilizando Dapper ORM?
- 30. Uso de dapper para adjuntar parámetros con MySql
'Dapper.Contrib' en Nuget? Usar 'Dapper.Contrib' y' Dapper.Rainbow' en el mismo proyecto ¿es una buena práctica? – Kiquenet