【发布时间】:2013-09-19 18:17:36
【问题描述】:
我正在开发一个使用 sqlite 作为数据库的 Windows 应用商店应用程序。我将 SQLite 用于 Windows 运行时和 sqlite-net。尝试从表中获取 Guid 列表,但仅在列表中获取空 guid ({00000000-0000-0000-0000-000000000000})。但是,当仅查询一个 guid 时,它可以正常工作。
我的代码如下:
async void SyncSurveys()
{
SQLiteConnection _db = new SQLiteConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, "SurveyDB"));
var localSurveys = (from s in _db.Table<Survey>()
select s.SurveyGuid).ToList();
...
}
我也尝试过以下格式的查询,但都不行:
var localSurveys = _db.Table<Survey>().Select(s => s.SurveyGuid).ToList();
但如果我使用以下查询,仅获取一个 guid 仅用于调试目的,则效果很好:
var localSurvey = db.Table<Survey>().FirstOrDefault().SurveyGuid;
在不工作的情况下,列表的计数与表的行计数匹配。有谁知道为什么这不适用于列表版本?
【问题讨论】:
-
尝试使用
Parse方法,例如_db.Table<Survey>().Select(s => Guid.Parse(s.SurveyGuid)).ToList();。不确定SurveyGuid的数据类型是什么,它是数据库中的字符串吗?这通常会在代码调用new Guid()而不是Guid.NewGuid()或Guid.Parse*时发生 -
SurveyGuid 的类型是
System.Guid,使用 sqlite-net 生成的表,但据我所知,在 sqlite 数据库中不是一种称为数据类型的东西,您的数据类型可以是任何东西,例如 ChickenSoup 或其他。您的解决方案不起作用,因为SurveyGuid是Guid,但Guid.Parse()需要字符串。 -
可以把表结构发到sqlfiddle.com吗?
标签: c# sqlite windows-store-apps sqlite-net