FK -> Relations

Ex_Soft
Дата: 16.01.2006 18:38:04
А что разве создание FK автоматом не модифицирует Relations?
public class MyDS: DataSet
{
   Tables.Add("TestTable");
   Tables["TestTable"].Columns.Add("Id",typeof(int));
   Tables["TestTable"].Columns.Add("Name",typeof(string));
   Tables["TestTable"].PrimaryKey=new DataColumn[]{Tables["TestTable"].Columns["Id"]};

   Tables.Add("TestTableDetail");
   Tables["TestTableDetail"].Columns.Add("Id",typeof(int));
   Tables["TestTableDetail"].Columns.Add("SubId",typeof(int));
   Tables["TestTableDetail"].PrimaryKey=new DataColumn[]{Tables["TestTableDetail"].Columns["Id"],Tables["TestTableDetail"].Columns["SubId"]};

   ForeignKeyConstraint
     fk=new ForeignKeyConstraint("fk_Master_Detail",Tables["TestTable"].Columns["Id"],Tables["TestTableDetail"].Columns["Id"]);

   fk.DeleteRule=Rule.Cascade;
   fk.UpdateRule=Rule.Cascade;
   Tables["TestTableDetail"].Constraints.Add(fk);
   Tables["TestTableDetail"].Columns.Add("Name",typeof(short),"Parent(fk_Master_Detail).Name");
}
получаю
Object reference not set to an instance of an object.

нужно еще добавить
...
DataRelation
  rel=new new DataRelation("fk_Master_Detail",Tables["TestTable"].Columns["Id"],Tables["TestTableDetail"].Columns["Id"]);

Relations.Add(rel);
Tables["TestTableDetail"].Columns.Add("Name",typeof(short),"Parent(fk_Master_Detail).Name");
Тогда работает, но, IMHO, это уже масло масленое получается... По большому счету весь сыр бор с FK только из-за установки cascade. Потому как быстро и красиво посредством Tables["TestTableDetail"].Constraints к полученному при Relations.Add() FK хрен достучишЪся. Или я где-то чего-то недопонял/пропустил?
_________________
"Helo, word!" - 17 errors 56 warnings
Ex_Soft
Дата: 16.01.2006 21:46:26
Порулить правилами каскадирования оказалось просто:
(Tables["TestTableDetail"].Constraints.["fk_Master_Detail"] as System.Data.ForeignKeyConstraint).DeleteRule=Rule.Cascade;
_________________
"Helo, word!" - 17 errors 56 warnings