使用 SQLite 在 Windows Phone 中建模
Model in Windows Phone using Sqlite
我在我的应用程序中使用 sqlite 数据库。为了创建数据库并用数据填充它,我必须创建一个 winForms 项目,我也在其中使用 sqlite。在这两种不同情况下,同一模型无法正常工作。我在 winForms 中的工作是:
[Parents]
int ParentId
string LName
virtual List<Child> Children
[Child]
int ChildId
int ParentId
int Count
完全相同的代码在 Windows Phone 中不起作用。 children 的列表总是空的。为什么会这样?
这取决于您使用的包装器。但是 - 是的 - 通常大多数 sqlite 包装器不支持外键结构。这意味着您将不得不编写额外的查询来从您的本地数据库中获取这些子项,例如:
parent.Children = conn.Table<Children>().Where(c => c.ParentID == parentId).ToList();
这应该不是一个或两个复杂级别的问题。但是,如果您的数据结构更复杂一些,您还可以使用一个扩展程序来注释关系:
https://bitbucket.org/twincoders/sqlite-net-extensions
请注意,这是 sqlite-net 的扩展。我推荐这个库,因为它(恕我直言!)是最受欢迎的库。
我在我的应用程序中使用 sqlite 数据库。为了创建数据库并用数据填充它,我必须创建一个 winForms 项目,我也在其中使用 sqlite。在这两种不同情况下,同一模型无法正常工作。我在 winForms 中的工作是:
[Parents]
int ParentId
string LName
virtual List<Child> Children
[Child]
int ChildId
int ParentId
int Count
完全相同的代码在 Windows Phone 中不起作用。 children 的列表总是空的。为什么会这样?
这取决于您使用的包装器。但是 - 是的 - 通常大多数 sqlite 包装器不支持外键结构。这意味着您将不得不编写额外的查询来从您的本地数据库中获取这些子项,例如:
parent.Children = conn.Table<Children>().Where(c => c.ParentID == parentId).ToList();
这应该不是一个或两个复杂级别的问题。但是,如果您的数据结构更复杂一些,您还可以使用一个扩展程序来注释关系:
https://bitbucket.org/twincoders/sqlite-net-extensions
请注意,这是 sqlite-net 的扩展。我推荐这个库,因为它(恕我直言!)是最受欢迎的库。