Xamarin SQLite.NET Generic TableQuery

时间:2016-03-29 09:40:58

标签: android xamarin sqlite.net

我使用组件" SQLite.NET"在我的Xamarin项目中。 我有几个"模型/类"喜欢" Document"," Project"。 每个模型在SQLite中都有自己的表。

要从表中获取数据,请使用以下技术:

List<Document> documents = new SQLiteConnection("..DB-path..").Table<Document>.ToList();

它工作正常,但对于每个表,我必须执行相同的代码,只更改上面代码中的Model-type。

现在我想写一个通用方法,我可以这样做:

List<T> data = new SQLiteConnection("..DB-path..").Table<T>.ToList();

但不幸的是,我收到以下错误:

  

&#39; T&#39;必须是具有公共无参数构造函数的非抽象类型才能将其用作参数&#39; T&#39;在泛型类型或方法&#39; SQLiteConnection.Table()&#39;

有没有人知道为上述问题创建通用方法的方法?

提前致谢!

1 个答案:

答案 0 :(得分:3)

你应该为你的功能添加约束。

public List<T> GetData<T> () where T: new()
{
    using(var connection = new SQLiteConnection("..DB-path..")){
       return connection.Table<T>.ToList();
    }
}

不要忘记丢弃数据库连接!