2016-09-13 3 views
1

Ich frage mich nur, ob es möglich war, Datenanmerkungen zu einer Klasse hinzuzufügen, die aus einer Klassenbibliothek referenziert wurde, die keinen Verweis auf EntityFramework enthält.Entity Framework 6 Hinzufügen von Datenanmerkungen zur referenzierten Klasse

Zum Beispiel Project.Data.Entities Bibliothek

public class User { 
    public long Id { get; set; } 
    public string UserName { get; set; } 
} 

Project.Data.Repositories.EntityFramework Referenzen Project.Data.Entities Bibliothek. Wie kann ich die Datenanmerkungen zu Schlüsseleigenschaften, Spaltennamen, Tabellennamen usw. hinzufügen?

Antwort

2

Es gibt fließende APIs für diesen Zweck.

EDIT

über Ihr Mapping müssen Sie

public class TestContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

     modelBuilder.Entity<User>() 
      .ToTable("user") 
      .HasKey(_ => _.Id); 

     modelBuilder.Entity<User>() 
      .Property(_ => _.Id).HasColumnName("id"); 

     modelBuilder.Entity<User>() 
      .Property(_ => _.UserName).HasColumnName("username"); // Add also HasMaxLength here 
    } 
} 

OnModelCreating

außer Kraft setzen (wenn Ihre Datenbank bereits, es ist nicht von EF auf Ihrem Modell erstellt vorhanden ist und Sie auch Migrationen deaktivieren müssen)

BEARBEITEN

Wenn Sie SQL Server mit einer CI-Codepage installiert haben, ist die Angabe des Spaltennamens nicht wichtig. Sie müssen also nur HasMaxLength

+0

[Table ("user")] public class User { [Key] [Spalte ("id")] public long-ID angeben {get; einstellen; } [Spalte ("Benutzername")] öffentliche Zeichenfolge Benutzername {get; einstellen; } } Wie kann ich dies mithilfe einer fließenden API erreichen, wenn ich weiß, dass meine Entitäten nur einem vorhandenen Datenbankschema zugeordnet werden müssen? –

+0

Ok, aber ich fühle, dass dies eine Art Overkill für jede Entität ist. Und wir haben noch nicht über Fremdschlüssel gesprochen! Datenanmerkungen erschienen viel sauberer und prägnanter ... gibt es überhaupt keine Möglichkeit, sie zu verwenden? –

+0

Kein Weg mit Daten Annotation (oder besser, können Sie Attribute auf die gleiche Weise der fließenden API so fließende API ist besser hinzuzufügen). Über flüssige API gibt es verschiedene Dinge, die Sie nicht mit Datenanmerkung tun können (die meisten von ihnen auf Beziehungen), also müssen Sie manchmal sie verwenden. – bubi

Verwandte Themen