VB.Net DataTable 的嵌套关系如何?

标签 vb.net datatable nested relationship

enter image description here

enter image description here

更新:我正在尝试使用屏幕截图(链接)中显示的架构创建 XML。有人告诉我如何添加关系来实现这个或修改数据表来实现这个吗?

        Data_Set.Relations.Add("ProdCategory", tbl_Product.Columns("pID"), tbl_Category.Columns("cID"))
    Data_Set.Relations("ProdCategory").Nested = True

    Data_Set.Relations.Add("CatogoryItems", tbl_Category.Columns("cID"), tbl_Items.Columns("iID"))
    Data_Set.Relations("CatogoryItems").Nested = True

    'Data_Set.Relations.Add("ProdItems", tbl_Product.Columns("pID"), tbl_Iems.Columns("iID"))
    'Data_Set.Relations("ProdItems").Nested = True

我坚持上面的代码。

而且我应该能够使用读取的 xml 将 xml 读回数据集。

最佳答案

您的代码看起来好像您正在尝试使用不同的父/子列,例如您将父表中的 productid 链接到子表中的 categoryid 等......这将产生不希望的结果。我最接近你想要什么的猜测:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim DtSet As New DataSet
    With DtSet
        .Tables.Add("Product")
        With .Tables("Product")
            .Columns.Add("ProductID", GetType(String))
            .Rows.Add("P1")
            .Rows.Add("P2")
        End With

        .Tables.Add("Category")
        With .Tables("Category")
            .Columns.Add("ProductID", GetType(String))
            .Columns.Add("CategoryID", GetType(String))
            .Rows.Add("P1", "C1")
            .Rows.Add("P1", "C2")
            .Rows.Add("P2", "C3")
            .Rows.Add("P2", "C4")
        End With

        .Tables.Add("Items")
        With .Tables("Items")
            .Columns.Add("ProductID", GetType(String))
            .Columns.Add("CategoryID", GetType(String))
            .Columns.Add("Items", GetType(String))
            .Rows.Add("P1", "", "Item1")
            .Rows.Add("P2", "", "Item2")
            .Rows.Add("", "C2", "Item3")
            .Rows.Add("", "C3", "Item4")
            .Rows.Add("", "C4", "Item5")
        End With

        .Relations.Add(New DataRelation("ProductToItems", .Tables("Product").Columns("ProductID"),
                                                                  .Tables("Items").Columns("ProductID"), False))

        .Relations.Add(New DataRelation("ProductToCategory", .Tables("Product").Columns("ProductID"),
                                                                     .Tables("Category").Columns("ProductID"), False))

        .Relations.Add(New DataRelation("CategoryToItems", .Tables("Category").Columns("CategoryID"),
                                                                   .Tables("Items").Columns("CategoryID"), False))
        For Each Relation As DataRelation In .Relations
            Relation.Nested = True
        Next
    End With

    DtSet.WriteXml("C:\Data\Data.XML", XmlWriteMode.IgnoreSchema)

End Sub

因为您的示例中有空值,所以您无法启用约束。

关于VB.Net DataTable 的嵌套关系如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406973/

相关文章:

vb.net - 在VB.NET中从SQL数据库中删除记录

mysql - 显示数据从dataGrid到Crystal report vb.net

javascript - 如何以编程方式将所需的行移动到数据表的顶部?

r - 在 Shiny 中结合 selectInput 和 DT::datatable 编辑

javascript - 简单的嵌套 setTimeout() 只运行一次 (JavaScript)

c# - 为什么 DateTime 基于 Ticks 而不是毫秒?

.net - VB中日期的下一行

mysql - 无法解析来自服务器的 JSON 数据。这是由使用 group by 时 Zend 框架中的 JSON 格式错误引起的

python-3.x - 如何从复杂字典中提取嵌套数据并从中提取嵌套数据以构建新字典?

python - 如何使用 Python 按值搜索嵌套的 JSON