2011-06-05 20 views
32

Estoy tratando de comenzar con Dapper en un proyecto existente de MVC3 y, aunque parece muy fácil de usar, parece que no puedo encontrar ningún tutorial sobre cómo configurarlo inicialmente. Cualquier enlace o sugerencia sería muy apreciada.¿Alguna buena muestra para comenzar a utilizar Dapper?

Muchas gracias.

+0

Dapper realmente funciona extendiendo la interfaz IDbConnection. Debe crear explícitamente la conexión, llamar a cualquiera de los métodos de extensión de Dapper y luego cerrar la conexión cuando haya terminado. Puedes echar otro vistazo al código en la respuesta de Marc Gravell. El trabajo que hace Dapper puede parecer perdido cuando lee muestras de código con todo el material de gestión de conexión. Simplemente navegue a través de todo eso y observe dónde se llama un método de extensión en el objeto de conexión. –

Respuesta

26

Esto es, en parte, porque no hay nada que establecido - todo lo que necesita es una base de datos (que no se preocupa) y algunas clases (la que no le importa).

Los métodos básicos simplemente toman SQL parametrizado, y están deliberadamente cerca de los métodos basados ​​en sql de LINQ-to-SQL (sugerencia: utilizamos Dapper como un reemplazo directo cuando tenemos problemas con LINQ-to-SQL) .

Si quiere tener algunos ejemplos, the "tests" project contiene ejemplos de las API principales.

Si quiere decir "cómo agrego Dapper", dos opciones; a single file agregado a su proyecto, o nuget package. El nuget pacakge tiende a retrasarse un poco, pero no mucho.

Pero en última instancia, el uso es simplemente:

// get all open orders for this customer 
var orders = connection.Query<Order>(
    "select * from Orders where CustomerId = @custId and Status = 'Open'", 
    new { custId = customerId }).ToList(); 

donde su clase Orders tiene propiedades cuyos nombres coincidan con la base de datos (que es un mapa muy directa). No se requieren atributos; no se requieren herramientas especiales. En nuestro caso, tendemos a usar clases generadas por LINQ-to-SQL con él, o una clase específica creada para un subconjunto de columnas (o compuesto entre varias tablas, etc.).

+0

* "El nuget pacakge tiende a retrasarse un poco, pero no mucho". *. No lo entiendo ¿Quiere decir retraso para instalar el paquete? – talles

+1

@talles no, solo quise decir que puede estar un poco detrás del código actual en el repositorio, mientras se estabiliza, etc. –

Cuestiones relacionadas