/******* Object: StoredProcedure [dbo].[Tabla_ClasePropiedades_C#] **************/ /******* Fecha: 15/02/2014 21:23:59 ******/ /******* Autor : Jorge Sánchez ********/ ALTER PROCEDURE [dbo].[Tabla_ClasePropiedades_C#] @Tabla CHAR(50) AS BEGIN DECLARE @IdCampo INT,@Campo CHAR(50),@Tipo CHAR(50),@Longitud INT --,@Permite_Nulo CHAR(10),@Tabla_Externa CHAR(50), DECLARE @Prefijo char(1),@sTipo char(10) DECLARE Campos CURSOR FOR SELECT DISTINCT syscolumns.colid AS IdCampo, syscolumns.name AS Campo, systypes.name AS Tipo, syscolumns.length AS Longitud FROM sysobjects sysobjects_1 RIGHT OUTER JOIN sysforeignkeys ON sysobjects_1.id = sysforeignkeys.rkeyid RIGHT OUTER JOIN syscolumns INNER JOIN sysobjects ON syscolumns.id = sysobjects.id INNER JOIN systypes ON syscolumns.xtype = systypes.xtype ON sysforeignkeys.fkeyid = syscolumns.id AND sysforeignkeys.fkey = syscolumns.colid LEFT OUTER JOIN sysindexkeys ON sysobjects.id = sysindexkeys.id AND syscolumns.colid = sysindexkeys.colid WHERE sysobjects.name = @Tabla AND systypes.name <> 'sysname' ORDER BY syscolumns.colid OPEN Campos FETCH NEXT FROM Campos INTO @IdCampo,@Campo,@Tipo,@Longitud; WHILE @@FETCH_STATUS = 0 BEGIN -- ****************************** PRINT DE LAS PROPIEDADES **************************************** -- *********>> PREFIJO DE LA PROPIEDAD SELECT @Prefijo = 'x' SELECT @sTipo = 'xxxxx' IF @Tipo = 'char' OR @Tipo = 'nchar' OR @Tipo = 'varchar' BEGIN SELECT @Prefijo = 's';SELECT @sTipo ='string' END IF @Tipo = 'int' OR @Tipo = 'Numeric' BEGIN SELECT @Prefijo = 'i';SELECT @sTipo ='int' END IF @Tipo = 'bit' BEGIN SELECT @Prefijo = 'b';SELECT @sTipo ='Boolean' END IF @Tipo = 'Date' OR @Tipo = 'Datetime' BEGIN SELECT @Prefijo = 'f';SELECT @sTipo ='DateTime' END SELECT @Prefijo = '_' -- ************** GENERAMOS LA PROPIEDAD PRINT 'private '+ LTRIM(RTRIM(@sTipo)) + ' ' + @Prefijo+LTRIM(RTRIM(@Campo)) + ';' PRINT 'public ' + LTRIM(RTRIM(@sTipo)) + ' ' + LTRIM(RTRIM(@Campo)) PRINT '{' PRINT ' get {return ' + @Prefijo+LTRIM(RTRIM(@Campo)) + ';}' PRINT ' set {' + @Prefijo+LTRIM(RTRIM(@Campo)) +' = value; }' PRINT '}' PRINT '' PRINT '' -- ************************************************************************************************* FETCH NEXT FROM Campos INTO @IdCampo,@Campo,@Tipo,@Longitud; END CLOSE Campos; DEALLOCATE Campos; END