Buscar..


Generando modelo desde base de datos

En Visual Studio vaya a su Solution Explorer luego haga clic en Project y agregará el mouse derecho del modelo. Elija ADO.NET Entity Data Model

introduzca la descripción de la imagen aquí

Luego, elija Generate from database y haga clic en Next en la siguiente ventana, haga clic en New Connection... y apunte a la base de datos desde la que desea generar el modelo (podría ser MSSQL , MySQL u Oracle )

introduzca la descripción de la imagen aquí

Después de hacer esto, haga clic en Test Connection para ver si ha configurado la conexión correctamente (no continúe si falla aquí).

Haga clic en Next luego elija las opciones que desee (como el estilo para generar nombres de entidades o para agregar claves externas).

Haga clic en Next nuevamente, en este punto debe tener un modelo generado desde la base de datos.

Agregando anotaciones de datos al modelo generado.

En la estrategia de generación de código T4 utilizada por Entity Framework 5 y superior, los atributos de anotación de datos no se incluyen de forma predeterminada. Para incluir anotaciones de datos en la parte superior de cierta propiedad en cada regeneración de modelo, abra el archivo de plantilla incluido con EDMX (con la extensión .tt ) y luego agregue una declaración de using bajo el método UsingDirectives como a continuación:

foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>
(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations;  // --> add this line

Como ejemplo, suponga que la plantilla debe incluir KeyAttribute que indica una propiedad de clave principal. Para insertar KeyAttribute automáticamente mientras se regenera el modelo, encuentre parte del código que contiene codeStringGenerator.Property como se muestra a continuación:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

Luego, inserte una condición if para verificar la propiedad clave como esta:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
             if (ef.IsKey(edmProperty)) { 
#>    [Key]
<#      } 
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

Al aplicar los cambios anteriores, todas las clases de modelo generadas tendrán KeyAttribute en su propiedad de clave principal después de actualizar el modelo desde la base de datos.

antes de

using System;

public class Example
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Después

using System;
using System.ComponentModel.DataAnnotations;

public class Example
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow