Excepción SQLite Mono + SQLite + Dapper durante la inserción

dapper mono sqlite3

Pregunta

Estoy usando Mono, SQLite, Dapper & Dapper Extensions. Puedo leer de la base de datos, pero Insertar no funciona. Estoy usando Mono Driver para sqlite.

El error no es muy informativo, al menos para mí. Cualquier ayuda será muy apreciada.

Error:

SQLite error
near ".": syntax error
at Mono.Data.Sqlite.SQLite3.Prepare (Mono.Data.Sqlite.SqliteConnection cnn, System.String strSql, Mono.Data.Sqlite.SqliteStatement previous, UInt32 timeoutMS,    System.String& strRemain) [0x00000] in <filename unknown>:0 
at Mono.Data.Sqlite.SqliteCommand.BuildNextCommand () [0x00000] in <filename unknown>:0

Código de prueba:

public void can_add_a_service_record()
    {
        var provider = new Provider { Name = "Hotmail" };
        int id = providerData.Insert(provider);         
        Assert.AreEqual("Hotmail", providerData.Get(id).Name);  
    }

El código para insertar es el siguiente.

public virtual int Insert (TEntity entity)
    {
        var connection = SqlHelper.GetConnection();         
        int id = connection.Insert<TEntity>(entity);
        connection.Close();
        return id;
    }

Gracias

Chirdeep

Respuesta aceptada

Para mí esto parece un problema de Dapper Extensions , no un problema de Dapper. En particular, no puedo ver implementado un dialecto Sqlite: https://github.com/tmsmith/Dapper-Extensions/tree/master/DapperExtensions/Sql .

Para resolver, le recomendaría que envíe un parche del proyecto Dapper Extensions (que está totalmente separado de Dapper) o use un contenedor diferente encima de Dappe, o use Dapper sin un contenedor.

Por ejemplo, lo siguiente debería funcionar:

var id = cnn.Query<int>("insert cars values(@name); select last_insert_rowid()", 
   new {name = "bmw"});


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow