Entity Framework
Generazione del primo modello di database
Ricerca…
Generazione del modello dal database
In Visual Studio
vai a Solution Explorer
quindi fai clic su Project
per aggiungere il modello Right mouse . Scegli il ADO.NET Entity Data Model
Quindi selezionare Generate from database
e fare clic su Next
nella finestra successiva, fare clic su New Connection...
e scegliere il database da cui si desidera generare il modello (Potrebbe essere MSSQL
, MySQL
o Oracle
)
Dopo aver fatto questo, fai clic su Test Connection
per vedere se hai configurato correttamente la connessione (non andare oltre se fallisce qui).
Fare clic su Next
quindi scegliere le opzioni desiderate (come lo stile per la generazione di nomi di entità o per aggiungere chiavi esterne).
Fare nuovamente clic su Next
, a questo punto si dovrebbe avere il modello generato dal database.
Aggiunta di annotazioni di dati al modello generato
Nella strategia di generazione codice T4 utilizzata da Entity Framework 5 e versioni successive, gli attributi di annotazione dati non sono inclusi per impostazione predefinita. Per includere le annotazioni di dati in cima ad un determinato bene ogni rigenerazione del modello, file modello aperto incluso con EDMX (con .tt
estensione) quindi aggiungere un using
economico nella UsingDirectives
metodo come di seguito:
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
Ad esempio, supponiamo che il modello includa KeyAttribute
che indica una proprietà di chiave primaria. Per inserire KeyAttribute
automaticamente durante la rigenerazione del modello, trova la parte del codice che contiene codeStringGenerator.Property
come di seguito:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Quindi, inserire una condizione if per verificare la proprietà chiave come segue:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Applicando le modifiche di cui sopra, tutte le classi del modello generate avranno KeyAttribute
sulla proprietà della chiave primaria dopo aver aggiornato il modello dal database.
Prima
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
Dopo
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}