私は 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 Message=SQL 論理エラーまたは "." の近くにデータベースがありません: 構文エラー Source=System.Data.SQLite StackTrace: at System.Data.SQLite.SQLite3.Prepare( SQLiteConnection cnn、String strSql、SQLiteStatement 前、UInt32 timeoutMS、String& strRemain) InnerException:
理由がわからない!それが生成しているSQLを確認する方法を見つけようとしていますが、その方法や可能かどうかさえわかりません。
ヘルプ!!!