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 Comentarios

  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?

Dejar respuesta

Please enter your comment!
Please enter your name here