Рассмотрим таблицу SQL Server, содержащую:
ID ParentID Text
=== ========= =============
1 (null) Product
2 (null) Applications
3 1 Background
4 1 Details
5 2 Mobile
Я заполняю SqlDataSet таблицей, и теперь я хочу добавить отношение Parent-Child к DataSet:
public DataRelation(
string relationName,
DataColumn parentColumn,
DataColumn childColumn,
bool createConstraints
)
Теперь этот парень использует:
DataRelation relation = newDataRelation("ParentChild",
ds.Tables[0].Columns["ID"], //parentColumn
ds.Tables[0].Columns["ParentID"] //childColumn,
true //createConstraints
);
Но когда я это сделаю, я получаю исключение:
This constraint cannot be enabled
as not all values have corresponding parent values.
Люди предлагали передать "ложь" вместо createConstraints; но тогда почему у него это работает?
А что такое ребенок и что такое родитель? Я бы подумал, что дочерний столбец - это столбец, который должен указывать на родительский, а родительский столбец - это то, что выполняет указание, что меняет отношение:
DataRelation relation = newDataRelation("ParentChild",
ds.Tables[0].Columns["ParentID"], //parentColumn
ds.Tables[0].Columns["ID"], //childColumn
true //createConstraints
);
Так что это? Почему его работа? Что за исключением? Почему он может создавать ограничение, когда у него есть нули?
Боже, здесь жарко.