1

我正在使用 Mono、SQLite、Dapper 和 Dapper 扩展。我可以从数据库中读取,但插入不起作用。我正在为 sqlite 使用 Mono 驱动程序。

至少对我来说,错误信息量不是很大。任何帮助都感激不尽。

错误:

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

谢谢

啾啾

4

1 回答 1

2

对我来说,这看起来像是一个Dapper 扩展问题,而不是一个 Dapper 问题。特别是,我看不到实现的 Sqlite 方言:https ://github.com/tmsmith/Dapper-Extensions/tree/master/DapperExtensions/Sql 。

要解决此问题,我建议您提交 Dapper Extensions 项目(与 Dapper 完全独立)的补丁,或者在 Dapper 之上使用不同的包装器,或者在没有包装器的情况下使用 Dapper。

例如,以下应该有效:

var id = cnn.Query<int>("insert cars values(@name); select last_insert_rowid()", 
   new {name = "bmw"});
于 2012-05-09T05:54:18.700 回答