[VB 2005] Creare relazioni trà tabelle SQL SERVER

lunedì 21 luglio 2008 - 15.46

enrico23 Profilo | Newbie

Buongiorno a tutti,

Il mio problema è che devo creare un database da codice
e fin qui tutto bene utilizzo la classe
microsoft.sqlserver.management.smo

il problema nasce quando devo creare delle relazioni trà le tabelle e non ho
trovato documentazione in riferimento se non qualche piccolo accenno alla
funzione check !

Qualcuno ha un pezzettino di codice da passarmi per capire come caricare le
relazioni tra le tabelle ?

Posto il mio esempio :

'*******************************
'***** PRIMA TABELLA

Dim TableClienti As New Table(db, "Clienti")

Dim IdCliente As Column = New Column(TableClienti, "IDCLIENTE")
IdCliente.DataType = DataType.Int
IdCliente.Nullable = False
IdCliente.Identity = True
IdCliente.IdentitySeed = 1
IdCliente.IdentityIncrement = 1

Dim CodiceCliente As Column = New Column(TableClienti, "Codice Cliente")
CodiceCliente.DataType = DataType.NVarChar(10)
CodiceCliente.Nullable = True

TableClienti.Columns.Add(IdCliente)
TableClienti.Columns.Add(CodiceCliente)

Dim index As Index = New Index(TableClienti, "PK_IDCLIENTE")
index.IndexKeyType = IndexKeyType.DriPrimaryKey
index.IndexedColumns.Add(New IndexedColumn(index, "IDCLIENTE"))
TableClienti.Indexes.Add(index)
TableClienti.Create()

'*******************************
'***** SECONDA TABELLA

Dim TableAttività As New Table(db, "Attività")

Dim IdAttività As Column = New Column(TableAttività, "IDATTIVITA")
IdAttività.DataType = DataType.Int
IdAttività.Nullable = False
IdAttività.Identity = True
IdAttività.IdentitySeed = 1
IdAttività.IdentityIncrement = 1

Dim IdCliente As Column = New Column(TableAttività, "IDCLIENTE")
IdCliente.DataType = DataType.Int
IdCliente.Nullable = False

TableAttività.Columns.Add(IdAttività)
TableAttività.Columns.Add(IdCliente)

Dim index As Index = New Index(TableAttività, "PK_IDATTIVITA")
index.IndexKeyType = IndexKeyType.DriPrimaryKey

index.IndexedColumns.Add(New IndexedColumn(index, "IDATTIVITA"))
TableAttività.Indexes.Add(index)

TableAttività.Create()

'*************************************
' Qui dovrei creare la relazione trà IDCLIENTE TABELLA1 E IDCLIENTE TABELLA 2

'*************************************


POSTO LA SOLUZIONE

'******************************
'Definisco la relazione.
Dim fk As ForeignKey = New ForeignKey()
fk.Name = "FK_Clienti_Attività"
fk.Parent = TableAttività
Dim fkc As ForeignKeyColumn
fkc = New ForeignKeyColumn(fk, "IDCLIENTE", "IDCLIENTE")
fk.Columns.Add(fkc)
fk.ReferencedTable = "Clienti"
fk.DeleteAction = ForeignKeyAction.Cascade
fk.Create()
'************************************

GRAZIE COMUNQUE
(Alle volte basta solo leggere bene i riferimenti della documentazione!



GRAZIE ANTICIPATAMENTE
--
La pazienza e la costanza sono la virtù dei forti ..... io sono l''eccezione
che conferma la regola
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5