Entity Framework
Base de datos de primera generación de modelos
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
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
)
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; }
}