none
Fehlermeldung "The entity type 'Mitarbeiter' requires a primary key to be defined." RRS feed

  • Frage

  • Hallo zusammen,

    bin neu hier und beginne grad meinen Umstieg von Visual FoxPro auf Visual Studio. Aktuell versuche ich in einem Übungsprojekt in .Net Core 2.0 mit Entity Framework Core 2.0 auf eine vorhandene SQLServer-Datenbank zuzugreifen. Über den Server-Explorer kann ich auf die Datenbank zugreifen. Im Code habe ich eine Klasse angelegt:

        public class Mitarbeiter
        {
     
            private int as_id;
            [Key]        
            public int As_ID { get => as_id; }
            public string As_Nachname { get; set; }
    
            public string As_Vorname { get; set; }
    
            public DateTime As_Geburtsdatum { get; set; }
    
        }

    in einer weiteren Klasse wird der Zugriff aufgebaut

        public class MitarbeiterDb : DbContext
        {
            public DbSet<Mitarbeiter> Mitarbeiterliste { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlServer(@"Data Source=MEINSERVER;Initial Catalog=MeineDB;Integrated Security=True");
            }
        }

    Anschließend sollen alle Mitarbeiter in der Konsole ausgegeben werden:

                using (var db = new MitarbeiterDb())
                {
                    foreach (var mitarbeiter in db.Mitarbeiterliste)
                    {
                        Console.WriteLine($"{mitarbeiter.As_Nachname} {mitarbeiter.As_Vorname} *{mitarbeiter.As_Geburtsdatum}");
                    }
                }

    Dabei erhalte ich aber die Fehlermeldung: System.InvalidOperationException: "The entity type 'Mitarbeiter' requires a primary key to be defined."

    Wo liegt hier der Fehler?

    Nebenbei: Kennt jemand eine gute Anleitung für EF Core 2. Da find ich sehr wenig.

    Besten Dank und freundliche Grüße

    Markus

    Donnerstag, 28. September 2017 20:07

Antworten

Alle Antworten

  • Hallo Markus,

    die Doku zum Entity Framework Core 2.0 findest Du hier:

      https://docs.microsoft.com/en-us/ef/core/

    Warum erzeugst Du den Primary Key als ReadOnly Property? Mach mal eine ganz normale Eigenschaft draus, dann sollte es funktionieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Maks M Freitag, 29. September 2017 21:24
    Donnerstag, 28. September 2017 20:47
    Moderator
  • Hallo Stefan,

    danke, das hat schon mal geholfen. Ich dachte, da die ID vom SQLServer vergeben wird, darf der Wert in der Anwendung nicht verändert werden. Wie verhindert man das dann? Reicht hier die Angabe [Key]?

    Hab nun aber eine andere Fehlermeldung bei der Ausgabe im Foreach:
    System.Data.SqlClient.SqlException: "Ungültiger Objektname "MitarbeiterListe"."

    Wo liegt hier das Problem? Ich hab den Connectionstring in Verdacht, bekomm aber keine Verbesserung hin.

    Beste Grüße

    Markus

    Freitag, 29. September 2017 11:15
  • Hallo nochmal,

    habs selbst raus gefunden. Hatte die Bezeichnung 'Mitarbeiterliste' willkürlich gewählt. Das mus aber die Bezeichnung der Tabelle in der Datenbank sein. Wenn ich das auf den Tabellennamen ändere, gehts einwandfrei.

    Beste Grüße

    Markus

    Freitag, 29. September 2017 21:24