Jak se vám přetrvávat stromovou strukturu tabulky databáze s automatické zvyšování ID pomocí ADO.NET DataSet a DataAdapter

hlasů
4

Mám sebereferenční role tabulku, která představuje stromové struktury

ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]

Jsem pomocí ADO.NET DataTable a DataAdapter načítání a ukládání hodnot do této tabulky. To funguje, pokud jsem jen vytvořit dětem existující řádky. Když udělám dítě řádek, pak se dítě o toto dítě, pak aktualizovat, dočasná hodnota ID generované DataTable se chystá do kolony ParentID. Mám následující sadu dat vztah:

dataset.Relations.Add(New DataRelation(RoleToRole,RoleTable.Columns(ID), RoleTable.Columns(ParentID)))

A když jsem si nové podřízené řádky v DataTable říkám metoda SetParentRow

newRow.SetParentRow(parentRow)

Je tu něco zvláštního musím udělat, aby se generování ID množit rekurzivně když volám aktualizace na DataAdapter?

Položena 07/08/2008 v 21:23
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Nevím ADO.NET především, ale většina ORMS nebude automaticky vložit ID nový rekord ve vztahu. Budete se muset uchýlit k 2-krocích:

  1. budovat a ušetřete rodič
  2. budovat a uložit dítě vztahu k mateřské společnosti

Důvod, že je to obtížné pro ORMS je proto, že může mít kruhové závislostí, a to by nebylo znát, který objekt je potřeba vytvořit ID pro první. Některé ORMS jsou dost chytří na to, aby zjistili, kde tyto vztahy nejsou tam žádné takové cyklické závislosti, ale většina z nich není.

Odpovězeno 23/08/2008 v 19:37
zdroj uživatelem

hlasů
0

Navrhuji, abyste přidat ForeignKeyConstraint s UpdateRule nastavena na Cascade.

Odpovězeno 01/10/2008 v 12:29
zdroj uživatelem

hlasů
0

Je v tom nějaký rozdíl, pokud jdete

newRow.SetParentRow(parentRow, RoleTable.Relations("RoleToRole"))
Odpovězeno 08/08/2008 v 00:57
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more