C# Entity Framework (CodeFirst) Objekt wird nicht geladen

Mike Lowrey

Commodore
Registriert
Juni 2005
Beiträge
4.978
Hallo zusammen ich sitze zur Zeit an einem Problem zu dem ich keine Lösung weiß...

Vielleicht kann mir einer von euch ja auf die Sprünge helfen.

Folgende Situation:

Ich habe eine Klasse die wie folgt aussieht:
Code:
public class Item
{
[Key]
public int ItemId {get; set;}
public String Description {get; set;}
public User Author {get; set;}

}
Diese stellt die wichtigste Tabelle dar, sie beinhaltet noch nen Haufen anderer Properties die hier aber nicht von Relevanz sein sollen.

Die Klasse User sieht wie folgt aus:
Code:
    public class User
    {
         [Key]
        public int UserId { get; set; }
        public String Name { get; set; }
        public String EMail { get; set; }
        public String Password { get; set; }
        public DateTime DateAdded { get; set; }
     public virtual List<Item> Items{ get; set; }
}

Im ersten Schritt habe ich ein Item Objekt erstellt und mit allen Daten gefüllt.
Ich habe im Datenbank Explorer auch geprüft ob die Daten übernommen wurde.
(Wurden sie ;) )
Nun will ich die Daten abrufen, an die ItemId sowie an Description komme ich dran und kann die Daten auslesen.
Will ich aber auf das Author Propertie zugreifen um den Namen auszugeben, bekomme ich eine NullPointerException weil Author null sei.
 
Hi,
du musst erst ein Objekt vom Typ "User" erzeugen. So wie du es bereits mit "Item" gemacht hast. Author ist ja vom Typ User und wenn du vorher noch keinen User erzeugt hast, dann ist Author NULL, weils eben noch keinen User gibt.
 
Ähm... wieso sollte ich ein User Objekt erzeugen? Dafür ist das Entity Framework doch da.

Ich erstelle ja auch das Item Objekt nur am Anfang um die Datenbank zu füllen, unter anderem mit einem User Objekt....
 
Code:
public User Author {get; set;}

sollte

Code:
public virtual User Author {get; set;}

sein.
Ergänzung ()

Nur nebenbei gefragt. Hat das einen Grund, wieso du das Model nicht aus der Datenbank importierst und stattdessen alles selber schreibst?
 
Danke holy für den Tipp. Mit virtual tag funktioniert es, obwohl ich eigentlich dachte, dass virtual nur benötigt wird wenn man lazy loading haben will!?

Nur nebenbei gefragt. Hat das einen Grund, wieso du das Model nicht aus der Datenbank importierst und stattdessen alles selber schreibst?
Wie meinen? Es gibt kein fertiges Datenbankmodell. Ich bin nur zu faul den Datenbank Wrapper selber zu schreiben, also erstelle ich mein Modell im Code und lasse das Entity Framework die passenden Datenbank generieren.
 
Zurück
Oben