我正在使用Mono,SQLite,Dapper & Dapper Extensions。我可以从数据库中读取,但插入不起作用。我正在使用 Mono Driver for 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;
}
谢谢
奇尔迪普
,这看起来像是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"});