Et site med kursusmaterialer, der bruges i forbindelse med undervisning i forskellige it relaterede emnerEn skøn grafik du kan nyde mens der undervises.
   

Send spørgsmål eller kommentar til Thor - klik her: Send en kommentar til Thor - omkring undervisning eller kursus  Søg i kursusmaterialerne. Kan bruges i forbindelse med undervisningen eller efter kurset  Til forsiden af kursusmaterialer.dk 

 

ASP.NET II / Dataset - extra / Relationer


ASP.NET fjernundervisningskursus

- Vil du gerne på kursus NU?

- Vil du gerne lære i dit eget tempo?

- Har du ikke tid til at tage på kursus ude i byen?

Så køb et kursus i ASP.NET som fjernundervisning på www.it-fjernundervisning.dk


Etablering af dataset

 

Oprettelse af kolonner

Sådan her kan det se ud, hvis man gerne vil oprette en tabel i et dataset:

  private void DanDataset()
  {
   DataSet dsetAndeby = new DataSet();
   DataTable dtblBeboere = new DataTable("Beboere");
   DataColumn dclmID = dtblBeboere.Columns.Add("ID", System.Type.GetType("System.Int32"));
   dclmID.AllowDBNull = false;
   dclmID.AutoIncrement = true;
   DataColumn dclmNavn = dtblBeboere.Columns.Add("Navn", System.Type.GetType("System.String"));
   dclmNavn.DefaultValue = "";
   dsetAndeby.Tables.Add(dtblBeboere);
  }

Bemærk at DataColumn objektet også har en Expression egenskab, der kan bruges til at lave beregninger på de øvrige kolonner i datasættet.

Vil man fylde data i datasættet kunne det se sådan her ud:

   DataRow drowBeboer = dtblBeboere.NewRow();
   drowBeboer["Navn"] = "Anders And";
   dtblBeboere.Rows.Add(drowBeboer);
   drowBeboer = dtblBeboere.NewRow();
   drowBeboer["Navn"] = "Fætter Højben";
   dtblBeboere.Rows.Add(drowBeboer);

Endnu en tabel kan oprettes med detalje informationer om beboerne:

   DataTable dtblDetaljer = new DataTable("Detaljer");
   dtblDetaljer.Columns.Add("ID", System.Type.GetType("System.Int32"));
DataColumn dclmDetaljeBeboerID =  dtblDetaljer.Columns.Add("BeboerID", System.Type.GetType("System.Int32"));
   dtblDetaljer.Columns.Add("Detaljeinfo", System.Type.GetType("System.String"));
   dsetAndeby.Tables.Add(dtblDetaljer);

Skal man sætte primærnøgle på en tabel gøres det som følger:

   UniqueConstraint Primaer = new UniqueConstraint("Primaer",dclmID);
   dtblBeboere.Constraints.Add(Primaer);
   DataColumn [] dclmArray = new DataColumn[1];
   dclmArray[0] = dclmID;
   dtblBeboere.PrimaryKey = dclmArray;

Bemærk dels, at kolonnen har fået sat: dclmID.AllowDBNull = false og dels, at PrimaryKey kun tager et array af datacolumns.

Det samme skal man gøre på den anden tabel.

 

Til sidst kan man oprette relationer:

   ForeignKeyConstraint fkey = new ForeignKeyConstraint("fkDetaljer", dclmID, dclmDetaljeBeboerID);
   fkey.DeleteRule = Rule.Cascade;
   fkey.UpdateRule = Rule.Cascade;
   dtblDetaljer.Constraints.Add(fkey);

DeleteRule og UpdateRule har følgende muligheder:

EgenskabBeskrivelse
CacadeOpdateringer i primærnøglen i hovedtabellen vil slå igennem på alle tilsvarende rækker i undertabellen. Sletter man en række i hovedtabellen vil alle tilsvarende rækker blive slettet i undertabellen.
SetDefaultÆndringer eller sletninger i hovedtabellen vil medføre, at nøglen på tilsvarende rækker i undertabellen vil blive sat til deres default værdi.
SetNullÆndringer eller sletninger i hovedtabellen vil medføre, at nøglen på tilsvarende rækker i undertabellen vil blive sat til null
NoneÆndringer eller sletninger i hovedtabellen vil ikke have nogen effekt i undertabellen.

   
Spacer Spacer Spacer Spacer