Problem mit dem Entity Framework

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey, habe ein kleines Problem mit dem Entity Framework. In der User-Klasse ist ein Property für die aktuelle Fraktion vorhanden. Wenn der Server startet, ist die Variable gefüllt. Wenn ich jedoch einen Command ausführe, und die Fraktion abfrage, ist der Wert der Variable `null`. Woran kann das liegen?



    Das ist der Code aus dem Server-Start Teil. Hier ist wird die Fraktion erfolgreich ausgegeben.

    C
    using (var context = new DatabaseContext())
    {
        foreach(User u in context.Users)
        {
            Faction f = u.Faction;
            NAPI.Util.ConsoleOutput("User: " + u.Name + " | Faction: " + (f == null ? "null" : f.Name));
         }
    }

    Im Command bekomme ich immer die Ausgabe f is null (u ist nicht null)

    C
    User u = player.GetUser();
    Entities.Faction f = u.Faction;            
    if(f == null)
    {                
        NAPI.Util.ConsoleOutput("f is null");
        return;
    }


    Kann jemand helfen?


    Grüße
    datgame

  • Hey,


    das hier ist meine User Klasse:



    Faction Klasse:


    C
    public class Faction
        {
            [Key]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int Id { get; set; }
            [StringLength(32)]
            public string Name { get; set; }
            public int BankAccount { get; set; }
            public bool StateOwned { get; set; }
        }

    Beim Starten ist der Wert der Fraktion gesetzt:


    Im Command ist die Fraktion null:


    Habe jetzt auch einen Befehl, um dem Spieler eine Fraktion zu setzen. Die Fraktion ist danach immer noch null.

  • Ich behaupte mal dass das Lazy Loading im Command nicht funktioniert.
    Ich kenne den Inhalt der Methode player.GetUser() nicht, aber sofern du da nicht explizit die Faction mit lädst (.Include(user => user.Faction) kann es null bleiben, da Lazy Loading nur greift wenn die entsprechende Property im User-Model virtual wäre. Je nach Verwendung von player.GetUser() würde ich über ein Eager Loading mit optionalem Lazy Loading nachdenken. :)

  • Beitrag von Tenchuu ()

    Dieser Beitrag wurde von Canna aus folgendem Grund gelöscht: Virustotal Link bitte bei Downloads hinzuzufügen ().