ArgumentNullException при создании нового типа данных - PullRequest
1 голос
/ 04 мая 2010

У меня есть две несвязанные таблицы в SQL Server. Я хочу сформировать отношения с ними через C #, чтобы диаграмма базы данных в SQL Server имела строку отношения и т. Д. (В коде могут быть недостатки, за исключением отсутствия использования операторов и т. Д., Кроме того, что я знаю).

Пока у меня есть этот код:

   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 таким образом?

Что дает?

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Все выглядит хорошо, если только в одной из таблиц нет столбца "deptno".

Вы очень близки, попробуйте это (точка с запятой в конце строки:)

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

Поскольку эти изменения возвращаются в базу данных, поскольку JWL_ начал входить, нет, нет, вот реклама MSDN :

Есть много раз, когда ваш Приложение должно работать с соответствующими столы. Хотя набор данных содержит таблицы и столбцы как в базе данных, это по своей сути не включает способность базы данных связывать таблицы. Тем не менее, вы можете создать DataRelation объекты, которые устанавливают отношения между родителем (хозяином) и ребенком (подробная) таблица на основе общего ключа.

0 голосов
/ 04 мая 2010

Отношения, которые вы объявляете в коде, не попадают в базу данных. Он живет только внутри вашего DataSet (по крайней мере, я так думаю).

...