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. Dapper mapeo mapeo intermedia
- 2. conversión de Dapper TinyInt
- 3. Dapper and In Condition
- 4. Dapper (connection.Query o connection.Execute)
- 5. Restaurar caché para Dapper
- 6. Dapper sencilla mapeo
- 7. Dapper ORM Objetos anidados
- 8. Dapper con MVCMiniProfiler
- 9. Dapper Edición Multi-mapeo
- 10. Dapper - como operador utilizando DynamicParameters
- 11. dapper nuget 1.7 enumeración enums
- 12. transacción con dapper dot net
- 13. Asignación de SqlGeography con Dapper
- 14. Acceso a Mysql usando dapper
- 15. ¿hay una ExecuteScalar en Dapper
- 16. Aclaración de Dapper Ejemplo Código
- 17. Dapper ORM paginación y clasificación
- 18. Dapper Objeto correcta/balasto Mapeo
- 19. Cómo pasar un parámetro nulo con Dapper
- 20. Cadena de mapa para guid con Dapper
- 21. Dapper dot net query en F #
- 22. ¿Llamar al constructor personalizado con Dapper?
- 23. ASP.NET MVC Administre SQLConnection con Dapper
- 24. escritura Dapper consultas para anidada Objetos
- 25. de asignación de entidades en Dapper
- 26. puede Dapper implementar múltiples eliminar insertar o actualizar como QueryMultiple?
- 27. ¿Cómo selecciono un objeto agregado de manera eficiente usando Dapper?
- 28. ¿Puede Dapper devolver valores de una función SQL?
- 29. ¿Alguna buena muestra para comenzar a utilizar Dapper?
- 30. Dapper handling devolvió el conjunto de resultados vacío
'Dapper.Contrib' en Nuget? Usar 'Dapper.Contrib' y' Dapper.Rainbow' en el mismo proyecto ¿es una buena práctica? – Kiquenet