Entity Framework
Databas första modellgenerering
Sök…
Generera modell från databasen
I Visual Studio
går du till din Solution Explorer
och klickar sedan på Project
så lägger du till höger musmodell . Välj ADO.NET Entity Data Model
Välj sedan Generate from database
och klicka på Next
i nästa fönster klicka på New Connection...
och peka på databasen du vill generera modell från (Kan vara MSSQL
, MySQL
eller Oracle
)
När du har gjort detta klickar du på Test Connection
att se om du har konfigurerat anslutningen ordentligt (gå inte längre om den misslyckas här).
Klicka på Next
och välj sedan alternativ du vill (som stil för att generera enhetsnamn eller lägga till utländska nycklar).
Klicka på Next
igen, då bör du ha en modell som genererats från databasen.
Lägga till kommentarer till den genererade modellen
I T4-kodgenerationsstrategi som används av Entity Framework 5 och högre, ingår inte standarddata för anteckningar i kommentarerna. För att inkludera dataanmärkningar ovanpå vissa egenskaper varje modellförnyelse, öppna mallfilen som ingår i EDMX (med .tt
förlängning) och lägg sedan till ett using
uttalande under UsingDirectives
metoden som nedan:
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
Anta som exempel att mallen bör innehålla KeyAttribute
som indikerar en primär nyckelegenskap. För att infoga KeyAttribute
automatiskt när du regenererar modell, hitta en del av koden som innehåller codeStringGenerator.Property
enligt nedan:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Sätt sedan in ett om-villkor för att kontrollera nyckelegenskapen som denna:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Genom att tillämpa ändringar ovan kommer alla genererade KeyAttribute
att ha KeyAttribute
på sin primära nyckelegenskap efter uppdatering av modellen från databasen.
Innan
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
Efter
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}