2017-07-10 4 views
1

ich die folgende SituationWie einen Primärschlüssel mit einem anderen Namen hat als „Id“

in meiner ASP.NET-Core-Anwendung mit Entity Framework-Core 1.1

Datenbank-Tabelle habe „Inhalt“ genannt

  • content_id (int not null, Primärschlüssel)
  • Titel (varchar max)
  • Beschreibung (varchar max)

Model ("ContentEntry.cs"):

public class ContentEntry 
{ 
    public int Id {get; set;} 
    public string Title {get; set;} 
    public string Description {get; set;} 
} 

Konfigurationsdatei (ContentEntryConfiguration.cs)

public class ContentEntryConfiguration : IEntityMappingConfiguration<ContentEntry> 
{ 
    public void Map(EntityTypeBuilder<ContentEntry> modelBuilder) 
    { 
     modelBuilder.HasKey(m => m.Id); 

     modelBuilder.Property(m => m.Id).HasColumnName("Content_ID"); 
     modelBuilder.Property(m => m.Title).HasColumnName("Title"); 
     modelBuilder.Property(m => m.Description).HasColumnName("Description"); 

     modelBuilder.ToTable("Content"); 
    } 
} 

Wie oben erwähnt, wird der Primärschlüssel meiner Tabelle mit dem Namen " Inhalts_ID ". Wenn ich eine LINQ-Abfrage ausführe, erhalte ich eine Fehlermeldung, dass die Spalte "ID" in der Datenbank nicht gefunden wurde. Nach der Überprüfung der generierten Abfrage mit dem SQL Profiler habe ich festgestellt, dass die Abfrage "ID" anstelle von "Content_ID" enthält. Ich erwarte, dass Entitätsframework stattdessen eine Abfrage generiert, die die Spalte "Column_ID" enthält, und es meiner Modelleigenschaft namens "Id" zuordnet.

Haben Sie eine Idee, warum dies geschieht und wie ich dieses Problem beheben könnte?

+0

@Kris ausreichen werde ich es korrigiert; es war nur ein Tippfehler, aber nicht die Ursache meines Problems. – Dario

Antwort

0

ich es gelöst, ich habe vergessen, nur die Entität Mapping in meiner DB Kontextklasse zu registrieren:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.RegisterEntityMapping<ContentEntry, ContentEntryConfiguration>(); 
} 
0

Für Menschen mit einfacheren Bedürfnissen dieser

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<ContentEntry>().Property(c => c.Id).HasColumnName("Content_ID"); 
} 
Verwandte Themen