2012-05-04 20 views
1

Mono、SQLite、Dapper & Dapper拡張機能を使用しています。私はデータベースから読むことができますが、挿入は機能していません。私はsqlite用にMono Driverを使用しています。Mono + SQLite +挿入時のDaite SQLite例外

エラーは私にはあまり有益ではありません。どんな助けでも大歓迎です。

エラー:

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 

テストコードは、次のよう

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

挿入するためのコードです。

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

おかげ

Chirdeep

答えて

1

は、私にとってこれはDapper Extensions問題ではなく、Dapperの問題のように見えます。特に、実装されたSqliteダイアレクトが表示されません:https://github.com/tmsmith/Dapper-Extensions/tree/master/DapperExtensions/Sql

解決方法Dapper Extensionsプロジェクト(Dapperに完全に独立しています)のパッチを提出するか、Dappeの上に別のラッパーを使用するか、ラッパーなしでDapperを使用することをお勧めします。

たとえば、次のように動作するはずです:理にかなっている

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

右を。おかげさまでサム。 –

+0

ちょうどコメント:クエリは一部のプラットフォームでは動作しません。クエリを使用する必要があります。 – Doug

+3

FYI:DapperExtensionsにSqlite用のダイアレクトが追加されました( 'DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();') – WiredPrairie