Ich habe eine bestehende Datenbank, die ich Entity Framework Code zuerst gegen die einfachste Art und Weise verwenden möchte. Es ist nur eine kleine Datenbank.Entity Framework Code Erste bestehende Datenbank Mapping-Beziehung
Ich habe einfach POCO-Klassen erstellt, die die Datenbanktabellen spiegeln:
z.B.
public class Author
{
[Key]
public int AuthorID { get; set; }
public string AuthorName { get; set; }
public virtual ICollection<Books> Books { get; set; }
}
public class Books
{
[Key]
public int BookID { get; set; }
public string BookName { get; set; }
public int AuthorID { get; set; }
}
Und ein DbContext wie folgt:
public class Entities : DbContext
{
public Entities(string connString)
: base(connString)
{
}
public DbSet<Author> Authors { get; set; }
public DbSet<Books> Books { get; set; }
Wenn ich meine Anwendung ausführen, und den ersten Autor aus meiner Datenbank auswählen, werden die AuthorID und Author Eigenschaften korrekt ausgefüllt. Die Sammlung von Büchern wird jedoch nicht aufgefüllt. Stattdessen gibt es eine Ausnahme vom Typ 'System.Data.EntityCommandExecutionException' und eine innere Ausnahme von: 'Ungültiger Spaltenname' Author_AuthorID '.
Wie kann ich die Verbindung zwischen Autor und Büchern korrekt herstellen? (d. h. eins zu viele, ein Autor kann viele Bücher haben). Ich habe den Code First ganz einfach erstellt - keine Migrationen oder automatische Generierung in irgendeiner Weise, und möchte es so einfach halten.
Vielen Dank für jede Hilfe, Martin
Dank Slava. Ich fand, dass dies immer noch einen Fehler gibt, aber das Hinzufügen der Annotation [ForeignKey ("Autor")] behebt dies zusätzlich (siehe unten). – Martin
Ich denke, Sie sollten Anmerkung [ForeignKey ("Autor")] in AuthorID Eigenschaft hinzufügen. um zu verhindern, redundante –
Es ist seltsam, in meinem Fall alle Arbeiten korrekt und Attribut nicht erforderlich, weil Namen Konventionen: 'AutorID' = _Author + ID_. Kann sein, hängt es von der Version von EF ab, im Falle von EF6 ist es funktioniert, was ist Ihre Version? –