[ Astek @ 29.12.2009. 22:37 ] @
Imam dataset koji je popunjen tabelama iz neke Sql Server baze podataka. Sada bi trebalo direktno prepoznati već postojeće relacije u toj Sql bazi podataka i "prebaciti" ih u taj dataset. Kako je moguće to uraditi?
Hvala.
[ Astek @ 29.12.2009. 23:10 ] @
Mislim da može SQL kataloga(recimo syscontraints).
[ w3bl0rd @ 30.12.2009. 06:15 ] @
pa trebalo bi automatski prepoznat i postavit relacije...
[ JoksosI @ 30.12.2009. 09:14 ] @
Nisam dobro razumeo pitanje zbog toga sto se relacija neke tabele prenosi u dataset.
Ako hoces da ti ucita citavu shemu onda koristi dataadapter jer je jdnostavnije.
[ Astek @ 30.12.2009. 11:58 ] @
Necu da u dataset prebacim sve tabele iz baze.
Trebalo bi da dataset-u dodam jednu tabelu(npr table1), pa kasnije drugu tabelu(npr table2) i ukoliko postoji neka relacija između tih tabela da bude prebacena u dataset (ili da na neki nacin sam izvucem iz Sql Servera tu informaciju kao sto spisak tabela dobijam sa NFORMATION_SCHEMA.Tables).
Ja sam sa dataAdapter.Fill(...) dodao dve tabele iz baze koje su povezane ali ta relacija nije prenesena u dataset.
[ w3bl0rd @ 30.12.2009. 12:22 ] @
Ja to radim tako da samo drag & drop iz SQL tabele u Dataset ne stvaram nikakav table1 pa da onda u nju ručno nešt radim...
i kad tako napraviš automatski se sve napravi, ako ne želiš sva polja, obrišeš nepotrebna i to je to...
[ Astek @ 08.01.2010. 13:10 ] @
Mislio sam da sam rešio problem ali nisam.
Da budem malo precizniji: ne znam unapred koja je baza u pitanju. U toku izvršavanja programa biram najpre bazu a zatim iz te baze punim dataset izabranim tabelama(jedna po jedna). Interesujeme kako da prepoznam postojeće relacije u Sql Server bazi podataka? Kao što sam prepoznao i tabele u toj bazi(select table_name as Name from INFORMATION_SCHEMA.Tables).


[ DarkMan @ 08.01.2010. 14:01 ] @
Primary key constraint:
Code:

select T1.CONSTRAINT_NAME, T2.COLUMN_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS T1
left join INFORMATION_SCHEMA.KEY_COLUMN_USAGE as T2 on T1.CONSTRAINT_NAME = T2.CONSTRAINT_NAME
where T1.TABLE_NAME = '<table name>'
  and T1.CONSTRAINT_TYPE = 'PRIMARY KEY'


Foreign key constraints:
Code:

select T2.CONSTRAINT_NAME, T1.COLUMN_NAME, T4.TABLE_NAME as REF_TABLE_NAME, T4.COLUMN_NAME as REF_COLUMN_NAME
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE as T1
left join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as T2 on T2.CONSTRAINT_NAME = T1.CONSTRAINT_NAME
left join INFORMATION_SCHEMA.TABLE_CONSTRAINTS as T3 on T2.UNIQUE_CONSTRAINT_NAME = T3.CONSTRAINT_NAME
left join INFORMATION_SCHEMA.KEY_COLUMN_USAGE as T4 on T3.CONSTRAINT_NAME = T4.CONSTRAINT_NAME
where T1.TABLE_NAME = '<table name>'
  and T1.ORDINAL_POSITION = T4.ORDINAL_POSITION
[ Astek @ 08.01.2010. 18:31 ] @
Hvala, trebalo bi da je to.