ArgumentNullException при создании нового datarelation

У меня есть две несвязанных таблицы в 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)

Я получаю это исключение:

аргумент 'столбца' не может быть нулевым. Название параметра: столбец

Действительно ли возможно на самом деле сформировать отношения в SQL Server этот путь?

Что дает?

1
задан curtisk 4 May 2010 в 12:34
поделиться

2 ответа

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

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

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

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

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

2
ответ дан 3 September 2019 в 00:51
поделиться

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

0
ответ дан 3 September 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: