20. oktober 2009 - 13:23Der er
11 kommentarer og 1 løsning
Data Access Layer spørgsmål
Hej,
Er igang med DAL for første gang. Har forbundet relation mellem tabellerne. Så mit spørgsmål er nu, Hvordan skal SQL koden se ud for at add Query mellem tabeller?
Jeg har faktisk skrevet noget vrøvl i mit tidligere indlæg. Det jeg ville have skrevet var:
Brug Add Query... på Child tabellen i DataSet designeren. Sæt kryds ved Use SQL Statement + SELECT which returns rows.
Brug 'Query Builder' for at lave SQL'en: Tilføj "= @MasterID" i Filter kolonner i 'MasterID' rækken. Du har nu lavet en SELECT, der tager en parameter.
Til sidst siger du, at du vil have to metoder, der hedder FillByMasterID og GetDataByMasterID
Du kan nu loade rækkerne i Child for en specifik Master-række ved at kalde
Her henter du rækkerne i Child, der er knyttet til en række i Master. FillByChildID, jeg lavede i min tidligere kommentar, kan bruges, hvis du på en eller anden både står med et ChildID, og bare vil have load'ed denne ene række: ChildTableAdapter.FillByChildID(ds.Child, childID); I praksis vil det nok ikke ske så tit.
Jeg kan ikke fortælle dig, hvilke Querys du har brug for på dine TableAdaptere. Det kommer an på, hvordan du har behov for at tilgå dine data.
Faktisk kan du nøjes med at sige (i eksemplet):
ExampleDataSet ds = new ExampleDataSet(); MasterTableAdapter.Fill(ds.Master); ChildTableAdapter.Fill(ds.Child);
... du får nu load'ed alle data i begge tabeller ind i hukommelsen i din klient.
Men hvis du kun har brug for data for en enkelt Master, vil det selvfølgelig være mere effektivt at sige: MasterTableAdapter.FillByMasterID(ds.Master, masterID); ChildTableAdapter.FillByMasterID(ds.Child, masterID); ThirdTableTableAdapter.FillByPeriode(ds.ThirdTable, fromDate, toDate);
... hvor jeg har tilføjet, at du er i gang med en operation, hvor du også har brug for data fra en tredje table, der falder indenfor en periode.
Tænk lidt over, hvordan du har brug for at tilgå data og tilføj de Queries. Du kan så tilføje flere, når du får brug for det, ifm. at du implementerer din funktionalitet.
Når du bruger et Typed Dataset, behøver du normalt ikke at bekymre dig om INSERT, UPDATE og DELETE. Medmindre at du gør noget usædvanligt eller får brug for at optimere.
Når du laver et Typed Dataset er Visual Studio så venlig, at autogenererer flere tusind linier kode for dig, og deribland en TableAdapterManager.
Efter at du har indsat, ændret og slettet data i dit DataSet, kan du sige:
using ExampleDataSetTableAdapters;
TableAdapterManager mng = new TableAdapterManager(); mng.MasterTableAdapter = new MasterTableAdapter(); mng.ChildTableAdapter = new ChildTableAdapter();
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.