Constancia icon

SQL_PROC_Tabla_Modelo_EF_VB

Constancia | PRO | 03/28/14 10:58:58 PM UTC | 0 ⭐ | 187 👁️ | Never ⏰ | []
PL/SQL |

3.01 KB

|

None

|

0 👍

/

0 👎

-- DROP PROCEDURE [dbo].[Tabla_Modelo_EF_VB]
 
-- EXEC Tabla_Modelo_EF_VB 'Tabla'
 
USE [BD]
GO
 
/****** Object:  StoredProcedure [dbo].[Tabla_Modelo_EF_VB]    Script Date: 03/28/2014 22:20:00 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[PROC_Tabla_Modelo_EF_VB]
    @Tabla CHAR(50)
AS
BEGIN
 
DECLARE @IdCampo INT,@Campo CHAR(50),@Tipo CHAR(50),@Longitud INT,@IdKey INT ,@Permite_Nulo INT--,@Tabla_Externa CHAR(50),
DECLARE @sTipo CHAR(10),@Anotaciones VARCHAR(500)
 
DECLARE Campos CURSOR
FOR 
SELECT DISTINCT 
sys.syscolumns.colid, sys.syscolumns.name AS Col, sys.systypes.name AS Tipo, sys.syscolumns.LENGTH AS Longitud, sys.sysindexkeys.colid AS IdKey, 
sys.syscolumns.isnullable
FROM         
sys.sysobjects AS sysobjects_1 RIGHT OUTER JOIN
sys.sysforeignkeys ON sysobjects_1.id = sys.sysforeignkeys.rkeyid RIGHT OUTER JOIN
sys.syscolumns INNER JOIN
sys.sysobjects ON sys.syscolumns.id = sys.sysobjects.id INNER JOIN
sys.systypes ON sys.syscolumns.xtype = sys.systypes.xtype ON sys.sysforeignkeys.fkeyid = sys.syscolumns.id AND sys.sysforeignkeys.fkey = sys.syscolumns.colid LEFT OUTER JOIN
sys.sysindexkeys ON sys.sysobjects.id = sys.sysindexkeys.id AND sys.syscolumns.colid = sys.sysindexkeys.colid
WHERE 
sys.sysobjects.name = @Tabla
AND sys.systypes.name <> 'sysname'
ORDER BY 
sys.syscolumns.colid
 
OPEN Campos
 
 
FETCH NEXT FROM Campos
INTO @IdCampo,@Campo,@Tipo,@Longitud,@IdKey,@Permite_Nulo;
 
WHILE @@FETCH_STATUS = 0
BEGIN
-- ****************************** PRINT DE LAS PROPIEDADES ****************************************
 
-- *********>> TIPOS
SELECT @sTipo = 'xxxxx'
 
IF @Tipo = 'char' OR @Tipo = 'nchar' OR @Tipo = 'varchar' BEGIN SELECT @sTipo ='string' END
IF @Tipo = 'int' OR @Tipo = 'Numeric' BEGIN SELECT @sTipo ='Integer' END
IF @Tipo = 'bit' BEGIN SELECT @sTipo ='Boolean' END
IF @Tipo = 'Date' OR @Tipo = 'Datetime' BEGIN SELECT @sTipo ='Date' END
 
 
--- *********>> ANOTACIONES
 
SELECT @Anotaciones = ''
IF @IdKey IS NOT NULL BEGIN SELECT @Anotaciones = @Anotaciones + '<Key()> _' + CHAR(13) END
IF @IdKey IS NOT NULL BEGIN SELECT @Anotaciones = @Anotaciones + '<DatabaseGenerated(DatabaseGeneratedOption.None)> _' + CHAR(13) END
IF @Permite_Nulo = 0 BEGIN SELECT @Anotaciones = @Anotaciones + '<Required(ErrorMessage:="El Campo ' + LTRIM(RTRIM(@Campo)) + ' es Obligatorio")> _' + CHAR(13) END
SELECT @Anotaciones = @Anotaciones + '<Display(Name:=" ' + LTRIM(RTRIM(@Campo)) + ' ")> _' + CHAR(13)
IF @Tipo = 'char' OR @Tipo = 'nchar' OR @Tipo = 'varchar' BEGIN 
    SELECT @Anotaciones = @Anotaciones + '<MaxLength(' + CONVERT(VARCHAR,@Longitud) + ')> _'
END
 
 
-- ************** GENERAMOS LA PROPIEDAD
PRINT @Anotaciones
PRINT 'Public Property ' + LTRIM(RTRIM(@Campo)) + ' As ' + @sTipo
PRINT ''
--PRINT ''
-- *************************************************************************************************
 
 
FETCH NEXT FROM Campos
INTO @IdCampo,@Campo,@Tipo,@Longitud,@IdKey,@Permite_Nulo;
 
END
CLOSE Campos;
DEALLOCATE Campos;
 
END
 
GO

Comments