我在 Visual Studio 2015 上使用 Xamarin 和这个 SQLite 插件:https ://github.com/praeclarum/sqlite-net
这是我的算法和对问题的解释:
public class MyModel
{
[PrimaryKey, AutoIncrement]
public int _id { get; set; }
public string bla { get; set; }
public string ble { get; set; }
public MyModel()
{
}
}
然后:
conn.CreateTable<MyModel>(CreateFlags.FullTextSearch4);
var item = new MyModel();
var insertCount = conn.Insert(item);
上面的代码为 insertCount 返回 1,并且 item._id 总是按应有的方式更新。但是当我稍后查询该表时,所有行的 _id 始终为 0。例如:
var tokens = mySearchBar.Text;
string query = "SELECT * FROM MyModel WHERE MyModel MATCH '" + tokens + "'";
List<MyModel> result = conn.Query<MyModel>(query);
这似乎有效,但感觉不对,它似乎并没有返回所有可能的结果。但主要问题是它为每个 _id 返回 0。我可以通过以下方式进行检查:
var bli = conn.Query<MyModel>("SELECT * FROM MyModel");
所有行 _id 都是 0。知道为什么以及如何解决它吗?
如果我创建没有 fts4 标志的表,我没有问题。但后来我无法进行 MATCH 搜索。
谢谢