1

我在 SQL Server 中有两个不相关的表。我想通过 C# 与它们建立关系,因此 SQL Server 中的数据库图具有关系线等(除了缺少 using 语句等之外,代码可能存在缺陷,除此之外让我知道)。

到目前为止我有这个代码:

   SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=Test;Integrated Security=SSPI");

        SqlDataAdapter ad1;
        SqlDataAdapter ad2;

        DataSet ds = new DataSet();
        DataRelation dr;


        ad1 = new SqlDataAdapter("Select * from dept", con);
        ad2 = new SqlDataAdapter("select * from emp", con);
        ad1.Fill(ds, "dept");
        ad2.Fill(ds, "emp");
        DataColumn pk = ds.Tables["dept"].Columns["deptno"];
        DataColumn fk = ds.Tables["emp"].Columns["deptno"];
        dr = new DataRelation("rel", pk, fk, false)
        ds.Relations.Add(dr);

        ds.AcceptChanges();
        ad1.Update(ds, "dept");
        ad2.Update(ds, "emp");

当我到达这条线时:

        dr = new DataRelation("rel", pk, fk, false)

我得到这个例外:

'column' 参数不能为空。参数名称:列

是否有可能以这种方式在 SQL Server 中实际形成关系?

是什么赋予了?

4

2 回答 2

2

一切看起来都不错,除非其中一张表没有“deptno”列。

你真的很接近,试试这个(分号在行尾:)

dr = new DataRelation("rel", pk, fk, false);

至于这些更改回到数据库,因为 JWL_ 开始进入,不,他们没有,这是来自 MSDN 的简介

很多时候,您的应用程序需要使用相关表。尽管数据集包含数据库中的表和列,但它本身并不包括数据库关联表的能力。但是,您可以创建基于公共键在父(主)表和子(明细)表之间建立关系的 DataRelation 对象。

于 2010-05-04T12:30:23.763 回答
0

您在代码中声明的关系不会最终出现在数据库中。它只存在于您的 DataSet 中(至少我认为是这样)。

于 2010-05-04T12:33:05.060 回答