質問: 私はGuidsをサポートしていた別の製品からSQLiteに製品のデータベースを移植しています。わかっているように、SQLiteはGuidsをサポートしていません。私はデータベース(データベース)からエンティティフレームワーク6モデルを作成しました。コードから渡されたGuidとGuidを比較するC#からクエリを作成する必要があります。 SQLite Entity FrameworkプロバイダがGuidsをどのように処理するかに関するドキュメントは見つかりません。ウェブ検索でも私にとって役に立たないものは見つかりませんでした。 SQLiteでEntity Frameworkを使用することに関するちょっとした疑問。 誰かが私にドキュメントを教えてもらえますか、あるいはEF6モデルを使ってSQLiteデータベースのGuidsを使って作業する方法を教えてください。
回答: 私はついにこの問題に答えました。 私の問題は、SQLite Entity Framework 6プロバイダがコード内のリテラルGuidをSQLに正しく変換する処理をしないことです。つまり、フォームのLinq式 ``` context.MyEntity.Where( x => x.GuidColumn == new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx") ) ``` 次のSQLに変換されます。 ``` SELECT GuidColumn, Column1, Column2, . . . Column n FROM MyEntity AS Extent1 WHERE Extent1.GuidColumn = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ``` 列に格納された値がバイト配列なので、これは間違っています。 このSQLiteサイトの問題報告によると、SQLiteチームはこれをプロバイダのバグとみなし、リリース1.0.95.0で修正するように努めています。私はそれがいつリリースされるかわからないが、少なくとも彼らはそれを問題として認識し、それを修正しようとしている。