Entity Framework
Erste Modellgeneration der Datenbank
Suche…
Modell aus Datenbank generieren
Gehen Sie in Visual Studio
zu Ihrem Project
Solution Explorer
und klicken Sie auf Project
, um das Modell mit der rechten Maustaste hinzuzufügen. Wählen Sie ADO.NET Entity Data Model
Wählen Generate from database
und klicken Sie im nächsten Fenster auf Next
, klicken Sie auf New Connection...
und zeigen Sie auf die Datenbank, aus der Sie das Modell generieren möchten (möglicherweise MSSQL
, MySQL
oder Oracle
).
Nachdem Sie dies getan haben, klicken Sie auf Verbindung Test Connection
zu sehen, ob Sie die Verbindung ordnungsgemäß konfiguriert haben (fahren Sie nicht weiter fort, falls die Verbindung hier fehlschlägt).
Klicken Sie auf Next
und wählen Sie dann die gewünschten Optionen aus (z. B. Stil zum Generieren von Entitätsnamen oder zum Hinzufügen von Fremdschlüsseln).
Klicken Sie erneut auf Next
. An diesem Punkt sollte das Modell aus der Datenbank generiert werden.
Hinzufügen von Datenanmerkungen zum generierten Modell
In der T4-Codegenerierungsstrategie, die von Entity Framework 5 und höher verwendet wird, werden die Attribute für die Anmerkungsdaten standardmäßig nicht berücksichtigt. Um bei jeder Modellregenerierung Datenanmerkungen zu bestimmten Eigenschaften hinzuzufügen, öffnen Sie die in EDMX enthaltene Vorlagendatei (mit der Erweiterung .tt
) und fügen Sie eine using
Anweisung unter der UsingDirectives
Methode wie UsingDirectives
:
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
Angenommen, die Vorlage sollte KeyAttribute
das eine Primärschlüsseleigenschaft angibt. Um KeyAttribute
automatisch während der Modellregenerierung einzufügen, suchen Sie einen Teil des Codes, der codeStringGenerator.Property
enthält, wie codeStringGenerator.Property
:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Fügen Sie dann eine if-Bedingung ein, um die Schlüsseleigenschaft wie folgt zu überprüfen:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Wenn Sie die obigen Änderungen anwenden, wird für alle generierten Modellklassen nach der Aktualisierung des Modells aus der Datenbank KeyAttribute
in der Primärschlüsseleigenschaft KeyAttribute
.
Vor
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
Nach dem
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}