Exception SQLite Mono + SQLite + Dapper lors de l'insertion

dapper mono sqlite3

Question

J'utilise des extensions Mono, SQLite, Dapper & Dapper. Je peux lire depuis la base de données mais Insert ne fonctionne pas. J'utilise Mono Driver pour sqlite.

L'erreur n'est pas très informative, au moins pour moi. Toute aide sera très appréciée.

Erreur:

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

Code de test:

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);  
    }

Le code pour insérer est comme suit.

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

Merci

Chirdeep

Réponse acceptée

Pour moi, cela ressemble à un problème lié aux extensions Dapper , pas à un problème Dapper. En particulier, je ne peux pas voir un dialecte SQL implémenté: https://github.com/tmsmith/Dapper-Extensions/tree/master/DapperExtensions/Sql .

Pour résoudre ce problème, je vous recommande de soumettre un patch au projet Dapper Extensions (totalement distinct de Dapper) ou d'utiliser un autre wrapper sur Dappe ou d'utiliser Dapper sans wrapper.

Par exemple, les éléments suivants devraient fonctionner:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi