我正在使用 SQLite、Dapper 和 DapperExtensions,所有这些都是通过 NuGet 提供的最新版本。
这是我的表的架构...
CREATE TABLE `LibraryInfo` (
`Id` INTEGER NOT NULL,
`Name` TEXT NOT NULL CHECK(length ( Name ) > 0),
`Description` TEXT,
`Version` TEXT NOT NULL CHECK(length ( Version ) > 0),
PRIMARY KEY(Id)
);
在其中我有一行包含以下数据
Id =“0”
名称=“测试库”
描述=“这是测试库”
版本=“1.2.3.4”
这是我那张桌子的 POCO ......
public class LibraryInfo
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Version { get; set; }
}
这是我初始化 DapperExtensions 的方式(我的表是复数,除了这个表)......
DapperExtensions.DapperExtensions.DefaultMapper = typeof(PluralizedAutoClassMapper<>);
public class LibraryInfoMapper : ClassMapper<LibraryInfo>
{
public LibraryInfoMapper()
{
Table(nameof(LibraryInfo));
AutoMap();
}
}
这是让我从数据库中读取 ID 为 0 的单行的代码......
var libraryInfo = connection.Get<LibraryInfo>(0);
这很好用。然而,这失败了……
libraryInfo.Description = "Test";
connection.Update(libraryInfo);
这是例外...
System.Data.SQLite.SQLiteException 发生 ErrorCode=1 HResult=-2147467259 消息=SQL 逻辑错误或“.”附近缺少数据库:语法错误 Source=System.Data.SQLite StackTrace:在 System.Data.SQLite.SQLite3.Prepare( SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain) InnerException:
不知道为什么!试图弄清楚如何查看它正在生成什么 SQL,但我不知道如何做到这一点,或者即使它是可能的。
帮助!!!