Generación automática de modelos de clases en mvc de la base de datos

He oído que la gente use el marco de la entidad para generar el modelo de clases de la base de datos. Supongo que si no quiero usar entity framework como capa de acceso a datos en lugar quiero usar datos de MS de bloqueo de la aplicación así que ¿cómo puedo generación automática de modelos de clases en MVC de base de datos en lugar de escribir el modelo de clases relacionadas de forma manual. Por favor me guía con todas las formas posibles. Gracias

  • Usted debe buscar Linq To SQL y cómo utilizar la funcionalidad de arrastrar y soltar interfaz de usuario que va con ella. Aquí un tutorial: codeproject.com/Articles/22000/LINQ-to-SQL
  • Si usted puede generar archivos xsd a partir de su base de datos, entonces usted puede utilizar xsd.exe para generar las clases de archivos xsd.
  • Creo que usted está buscando para esta herramienta visualstudiogallery.msdn.microsoft.com/…
InformationsquelleAutor Thomas | 2013-05-22

2 Kommentare

  1. 6

    Sé que esto es una vieja pregunta, pero para una rápida y fácil de clase yo uso esta en SMS. Se añade la «necesaria» y » longitud de cadena de datos de anotaciones yo habitualmente uso.

    Basado en esta respuesta.

        DECLARE @TableName VARCHAR(MAX) = 'tablename' -- Replace 'tablename' with your table name
        DECLARE @NameSpace VARCHAR(MAX) = 'namespace' -- Replace 'namespace' with your class namespace
        DECLARE @TableSchema VARCHAR(MAX) = 'dbo' -- Replace 'dbo' with your schema name
        DECLARE @result varchar(max) = ''
    
        SET @result = @result + 'using System;' + CHAR(13)
        SET @result = @result + 'using System.ComponentModel.DataAnnotations;' + CHAR(13) + CHAR(13) 
    
        IF (@TableSchema IS NOT NULL) 
        BEGIN
            SET @result = @result + 'namespace ' + @NameSpace  + CHAR(13) + '{' + CHAR(13) 
        END
    
        SET @result = @result + 'public class ' + @TableName + CHAR(13) + '{' + CHAR(13) 
    
        SET @result = @result + '#region Instance Properties' + CHAR(13)  
    
        SELECT @result = @result + CHAR(13)     
            + ' [Display(Name = "' + ColumnName + '")] ' + CHAR(13) 
            + CASE bRequired WHEN 'NO' 
            THEN 
            CASE WHEN Len(MaxLen) > 0 THEN ' [Required, StringLength(' + MaxLen + ')]' + CHAR(13) ELSE ' [Required] ' + CHAR(13)  END   
            ELSE
            CASE WHEN Len(MaxLen) > 0 THEN ' [StringLength(' + MaxLen + ')]' + CHAR(13) ELSE '' END  
            END
            + ' public ' + ColumnType + ' ' + ColumnName + ' { get; set; } ' + CHAR(13) 
        FROM
        (
            SELECT  c.COLUMN_NAME   AS ColumnName 
                , CASE c.DATA_TYPE   
                    WHEN 'bigint' THEN
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Int64?' ELSE 'Int64' END
                    WHEN 'binary' THEN 'Byte[]'
                    WHEN 'bit' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Boolean?' ELSE 'Boolean' END            
                    WHEN 'char' THEN 'String'
                    WHEN 'date' THEN
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTime?' ELSE 'DateTime' END                        
                    WHEN 'datetime' THEN
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTime?' ELSE 'DateTime' END                        
                    WHEN 'datetime2' THEN  
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTime?' ELSE 'DateTime' END                        
                    WHEN 'datetimeoffset' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTimeOffset?' ELSE 'DateTimeOffset' END                                    
                    WHEN 'decimal' THEN  
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Decimal?' ELSE 'Decimal' END                                    
                    WHEN 'float' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Single?' ELSE 'Single' END                                    
                    WHEN 'image' THEN 'Byte[]'
                    WHEN 'int' THEN  
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Int32?' ELSE 'Int32' END
                    WHEN 'money' THEN
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Decimal?' ELSE 'Decimal' END                                                
                    WHEN 'nchar' THEN 'String'
                    WHEN 'ntext' THEN 'String'
                    WHEN 'numeric' THEN
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Decimal?' ELSE 'Decimal' END                                                            
                    WHEN 'nvarchar' THEN 'String'
                    WHEN 'real' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Double?' ELSE 'Double' END                                                                        
                    WHEN 'smalldatetime' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTime?' ELSE 'DateTime' END                                    
                    WHEN 'smallint' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Int16?' ELSE 'Int16'END            
                    WHEN 'smallmoney' THEN  
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Decimal?' ELSE 'Decimal' END                                                                        
                    WHEN 'text' THEN 'String'
                    WHEN 'time' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'TimeSpan?' ELSE 'TimeSpan' END                                                                                    
                    WHEN 'timestamp' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'DateTime?' ELSE 'DateTime' END                                    
                    WHEN 'tinyint' THEN 
                        CASE C.IS_NULLABLE
                            WHEN 'YES' THEN 'Byte?' ELSE 'Byte' END                                                
                    WHEN 'uniqueidentifier' THEN 'Guid'
                    WHEN 'varbinary' THEN 'Byte[]'
                    WHEN 'varchar' THEN 'String'
                    ELSE 'Object'
                END AS ColumnType,
                    c.IS_NULLABLE AS bRequired,
                    CASE c.DATA_TYPE             
                    WHEN 'char' THEN  CONVERT(varchar(10),c.CHARACTER_MAXIMUM_LENGTH)
                    WHEN 'nchar' THEN  CONVERT(varchar(10),c.CHARACTER_MAXIMUM_LENGTH)
                    WHEN 'nvarchar' THEN  CONVERT(varchar(10),c.CHARACTER_MAXIMUM_LENGTH)
                    WHEN 'varchar' THEN  CONVERT(varchar(10),c.CHARACTER_MAXIMUM_LENGTH)
                    ELSE ''
                END AS MaxLen,
                c.ORDINAL_POSITION 
        FROM    INFORMATION_SCHEMA.COLUMNS c
        WHERE   c.TABLE_NAME = @TableName and ISNULL(@TableSchema, c.TABLE_SCHEMA) = c.TABLE_SCHEMA  
        ) t
        ORDER BY t.ORDINAL_POSITION
    
        SET @result = @result + CHAR(13) + '#endregion Instance Properties' + CHAR(13)  
    
        SET @result = @result  + '}' + CHAR(13)
    
        IF (@TableSchema IS NOT NULL) 
        BEGIN
            SET @result = @result + CHAR(13) + '}' 
        END
    
        PRINT @result
    • Fantástico, gracias
  2. 5

    Buena manera de hacerlo es utilizar ADO.NET Modelo de Datos de Entidad:
    En Visual Studio, haga clic derecho sobre el proyecto -> «Agregar» -> «Nuevo Elemento» -> «Datos» -> «ADO.NET Entidad Modelo de Datos» -> «Generar a partir de la base de datos» -> elegir o crear conexión -> tablas de elegir -> ampliar creado *.tt grupo de archivo -> Usted lo consigue 🙂

    • me dijo que yo no uso de entity framework en lugar quiero usar MSDAAB lugar, entonces por qué usted está diciendo que el uso de EF?
    • Lo siento si no funciona para usted. Pero para las de un solo uso es la mejor manera. Después de las clases generación no es necesario el uso de EF.
    • He hecho esto. Pero en mi clase no tiene un constructor. En su caso, tenía un constructor?

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea