У меня есть две несвязанных таблицы в 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 этот путь?
Что дает?
Все выглядит нормально, если только в одной из таблиц нет столбца "deptno" ..
Вы очень близки, попробуйте это (полу -colon в конце строки :)
dr = new DataRelation("rel", pk, fk, false);
Что касается этих изменений, возвращающихся к базе данных, поскольку JWL_ начал входить, нет, они этого не делают, вот рекламное объявление из MSDN :
Часто вашему приложению необходимо работать со связанными таблицами. Хотя набор данных содержит таблиц и столбцов, как в базе данных, он по своей сути не включает способность базы данных связывать таблицы. Однако вы можете создать DataRelation. объекты, которые устанавливают связь между родительской (главной) и дочерней (подробной) таблицей на основе общего ключа.
Отношения, которые вы объявляете в коде, не попадают в базу данных. Оно живет только внутри вашего DataSet (по крайней мере, я думаю, что это так).