2012-02-20 14 views
7

Estoy tratando de usar Dapper dot net en F # para realizar una consulta SQLite simple. Dapper devuelve una colección de objetos dinámicos: usarlos en C# es sencillo, pero por lo que entiendo, F # no tiene una implementación dinámica de búsqueda de propiedades lista para usar.Dapper dot net query en F #

Esto está trabajando pero supongo que hay mejores maneras de hacer esto sin tener que recurrir a la reflexión:

let (?) x prop = 
    let flags = BindingFlags.GetProperty ||| BindingFlags.InvokeMethod 
    x.GetType().InvokeMember(prop, flags, null, x, [||]) 

let doQuery() = 
    //... 
    let conn = new SQLiteConnection (connString) 
    conn.Open() 

    conn.Query("select first_name from customers") 
     |> Seq.map (fun c -> c ? first_name) 
     |> List.ofSeq 

¿Cuál es la mejor manera de poner en práctica el? operador en este caso?

+3

Parece que este hilo responde a su pregunta: http://stackoverflow.com/questions/6150087/f-dynamic-object-access – pad

+0

@pad Buena respuesta. Deberías haber agregado tu respuesta como respuesta para poder votarla :-) –

+0

@OnorioCatenacci: Lo agrego como respuesta, no estoy seguro de que valga la pena responder :). – pad

Respuesta

6

This thread consiste en varias soluciones para su problema. Especialmente, FSharp.Interop.Dynamic está disponible en NuGet y listo para usar.

+0

Esperaba que hubiera una manera más fácil (o sin una biblioteca externa). Supongo que un gran poder/gran responsabilidad, etc ... :-) –