【发布时间】:2015-12-14 10:42:32
【问题描述】:
我正在使用查询来查询我的 Sqlite 数据库,如下所示:
string noteSql = "select Column1, Column2 from [Diary.Notes]"
var notes = database.Query<object>(noteSql) as List<Object>;
其中Column1 是Int,Column2 是String
但是当我的列表 notes 返回时,对象是不可读的。
我知道我可以创建一个具有 Int 和 String 类型的两个属性的对象,这适用于从 [DiaryNotes] 返回的两个列,但我想要一个更通用的解决方案。
我试图创建一个如下的通用类:
[Table("Table1")]
public class GenericSqliteObject : Object
{
public GenericSqliteObject()
{
}
private object _column1;
[Column("Column1")]
public object Column1
{
get { return _column1; }
set { _column1 = value; }
}
private object _column2;
[Column("Column2")]
public object Column2
{
get { return _column2; }
set { _column2 = value; }
}
}
但将行改为:
var notes = database.Query<GenericSqliteObject>(noteSql) as List<GenericSqliteObject>;
不断返回错误:
{System.NotSupportedException: 不知道如何读取 System.Object
在 SQLite.Net.SQLiteCommand.ReadCol(IDbStatement stmt,Int32 索引, ColType 类型,System.Type clrType) [0x00827] in :0
在 SQLite.Net.SQLiteCommand+d__15`1[T].MoveNext () [0x00137] 在 :0
有没有办法从 Sqlite 查询返回一个通用对象,这样我就不必为不同的用例创建对象?
PS。我这里的示例已被简化以演示问题
【问题讨论】: