c# - 如何在 sqlite join 从 windows store c#/xaml 应用程序中的多个表返回数据时设置属性类

标签 c# sqlite properties microsoft-metro windows-runtime

我已阅读this回答。它告诉我们创建一个与您返回的数据结构相匹配的类。所以我做了这样的类(class)

public class PersonJob
{
    public Person person { get; set; }

    public Job job { get; set; }
}

var data = db.Query<PersonJob>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID");

因此结果数据有结果,但属性 personjob 为 null。我的文本 block 与 PersonJob 类的属性绑定(bind)。请给我适当的建议。

最佳答案

该查询返回单个表中的多个列。 如果 Person 表包含 IDNameJobID 列,并且 Jobs 表有列 IDDescription,结果如下所示:

ID Name     JobID ID Description
-- -------- ----- -- -------------
 1 John Doe    10 10 Bottle Washer
 2 Jane Roe    10 10 Bottle Washer
 3 Xyroid      11 11 CEO

因此,您需要创建一个包含这五个字段的类。

为了避免重复的字段或字段名称,并使其在以后扩展表时也能正常工作,您应该在 SELECT 语句中列出所需的字段:

SELECT Person.ID AS PersonID, Person.Name, Job.ID AS JobID, Job.Description
FROM Person INNER JOIN Job ON Person.JobID = Job.ID

这需要一个像这样的类:

class PersonWithJob
{
    public int PersonID ...
    public string Name ...
    public int JobID ...
    public string Description ...
}

关于c# - 如何在 sqlite join 从 windows store c#/xaml 应用程序中的多个表返回数据时设置属性类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793623/

相关文章:

c# - WeakEvent 的事件监听器可以随时被垃圾回收删除吗?

actionscript-3 - 为什么这个属性/函数名称冲突会在 AS3 中编译?

android - 将数据库中的特定列检索到 Spinner

sqlite3 - MAX() 函数不返回列的最大值

php - 如何动态创建新属性

java - 如何处理 *.txt 文件中缺少键的异常?属性文件?

c# - Selenium WebDriver 跨测试用例共享同一 session

c# - 按日期时间对数据表中的日期时间行进行分组 - C#

c# - .Net c# VisualStudio 2017执行测试,vstest.console.exe命令行说没有可用的测试

sqlite - 带有 SQLite 的 Dokku?