2017-10-20 1 views
0

Ich verwende EF Code First seit 1 Monat. Mein Projekt muss mit vielen Tabellen (über 100 Datentabellen) arbeiten und sie werden in Zukunft viele Male geändert werden. Es ist schwer zu kontrollieren und braucht Zeit, um die Migration hinzuzufügen.Wie wird der Tabellenname auf EF Entity abgebildet?

Gibt es eine Lösung, um den Schritt der Add-Migration zu überspringen, erstellen Sie einfach die Tabelle in der Datenbank und erstellen Sie eine Zuordnung zu der Entität?

Beispiel:

In Datenbank habe ich eine Tabelle wie folgt aus:

CREATE TABLE dbo.MyTable 
(
    Id INT, 
    Name VARCHAR(255), 
    Description VARCHAR(1000) 
); 

Ich möchte es auf die folgende Einheit zur Karte:

public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

Meine erwartete Lösung so etwas wie dieses :

CreateMap("dbo.MyTable", MyEntity) 
+1

Sie können das Attribut [Table ("MyTable")] für Ihre Entität verwenden? – MstfAsan

+0

https://stackoverflow.com/help/how-to-ask – Kixoka

Antwort

2

Verwenden Sie das Attribut System.ComponentModel.DataAnnotations.Schema.Table

[Table("MyTable")] 
public class MyEntity 
{ 
    public Id int {get; set;} 
    public Name string {get; set;} 
    public Description string {get; set;} 
} 

Wenn Sie tatsächlich nicht über die Migrationen ausführen möchten, schlage ich sie erstellen trotzdem und kommentieren Sie den entsprechenden Code, bevor Sie sie ausführen. Auf diese Weise sind Sie für den Anlass gut vorbereitet, wenn Sie sie tatsächlich ausführen möchten.

1

Sie können durch Überschreiben der Methode aufgerufen OnModelCreating in Ihrem DbContext die Entitäts-Maps definieren:

Dann können Sie einige Karten hinzufügen, ähnlich wie:

modelBuilder.Entity<Order>(m => { 
    m.ToTable("MyTable", "dbo"); 
}) 

Info: https://docs.microsoft.com/en-us/ef/core/modeling/relational/tables

EDIT: Ich weiß nicht wie das Hinzufügen von Annotationen direkt zu meiner Entität, da ich es vorziehe, sie an einer Stelle zu zentralisieren. Einfacher zu verwalten. Schließlich denke ich, es eine Frage der Präferenzen ist :)

Verwandte Themen