在VB中使用数据适配器和关系.. NET (Compact Framework)



我已经为这个问题寻找了几个小时的解决方案,但什么也没有,所以我在这里。

我有一个数据集与4个数据表:

    DS
    +Parent
    ++Child1
    ++Child2
    ++Child3

我在数据集上定义了使用pk链接父节点到子节点的关系。

问题是当我填充(使用数据适配器)。填充方法)子表,数据库返回所有记录,而不仅仅是与父表相关的记录,所以我的数据表比他们需要的大,需要一段时间来加载,因为这是一个移动设备的代码,这是一个溢价。

我不能像在父数据上那样在子数据上使用WHERE过滤器,因为这取决于父数据。

在填充子表时是否有办法只返回与父表相关的记录?

我一定是看这里的东西,因为我认为这将是简单的东西?!?

谢谢。

EDIT:在构建SELECT命令时,唯一已知的ID是父表的单一公共标识符。这对于过滤子表是不好的,因为这些数据不存在于子表中,只有父表的PK是未知的。

如果您只知道父表id,这还不足以确定子表中需要哪些记录,也许您可以尝试封装业务逻辑的嵌套选择:

SELECT * 
FROM child1 c
WHERE c.myforeignkey in 
    (
    select p.myforeignkey
    from parent p
    where p.parentid = ...
    )

在LEFT JOIN上?

SELECT c.* 
FROM child1 c
LEFT JOIN parent p on c.commonid = p.commonid
WHERE p.parentid = ...

您已经说过您使用parent PK = child fk链接到子表,因此您将在子表中有一个parentid列。填充父表的查询格式为SELECT * FROM parent WHERE parentid = @parentid,填充子表的查询格式为SELECT * FROM child1 WHERE parentid = @parentid

最新更新