6

次のプロジェクトで SQLite を使用することを考えていましたが、適切なデータ型が不足しているように見えるのではないかと心配していdatetimeますbit

DbLinq (またはその他の ORM) を使用して C# クラスを生成すると、プロパティのデータ型は「ばかげた」ものになりますか? 日時データはタイプstringまたはタイプのプロパティに配置されますかdouble? ブール データはタイプのプロパティに配置されますintか?

はいの場合、どのような影響がありますか? より具体的なデータ型を持つクラスの 2 番目のレイヤー全体を作成し、一連の変換とキャストを実行する必要があるシナリオを想定していますが、恐れているほど悪くはないかもしれません。これまたは同様のシナリオの経験がある場合、どのように対処しましたか?

4

4 に答える 4

1

NULLSQLite 自体は、INTEGER、 、REALTEXT、およびの5 つのデータ型のみを認識しBLOBます。ただし、必要な型名を宣言できるため、次のように記述できます

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

そして、ORM に型を好きなように解釈させます。

私は SQLite の C++ ラッパーを作成し、すべてのデータベース値をバリアント型で表すという別のアプローチを採用しました。このバリアントは、異なるタイプ間の変換を提供するためSqlValue("2010-05-03 01:01:04").AsTimestamp()、期待されるタイムスタンプ オブジェクトを提供します。

于 2010-05-03T06:08:49.407 に答える
0

System.Data.SQLite ADO.NETプロバイダーには、特定のテーブルの列に関するさまざまなメタデータを取得できるSQLiteMetaDataCollectionNamesクラスが含まれています

これには、各列の「ヒント」データ型(SQLiteは厳密な型指定を強制しません)を記述する「DataTypes」プロパティが含まれています。これを使用すると、ORMは同等のC#タイプとの間で必要な変換を実行できます。

于 2010-05-03T06:46:34.887 に答える
0

私はSystem.Data.SQLiteを使用しており、VS2008のデザインツールから、DateTimeとBitのデータ型が得られます。私はDbLinqについてあまり考えていませんが。ただし、DateTimeとBitのデータ型はSqlLiteでサポートされています

于 2010-05-03T05:38:08.870 に答える
0

Zend Framework で SQLite 用のアダプターに取り組みました。

SQLite テーブルのメタデータとデータ型を取得するために、PRAGMA TABLE_INFO( <tablename> )その出力を使用して解析しました。

于 2010-05-03T19:00:06.453 に答える