Problem mit dem Entity Framework

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit dem Entity Framework

    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-Quellcode

    1. using (var context = new DatabaseContext())
    2. {
    3. foreach(User u in context.Users)
    4. {
    5. Faction f = u.Faction;
    6. NAPI.Util.ConsoleOutput("User: " + u.Name + " | Faction: " + (f == null ? "null" : f.Name));
    7. }
    8. }
    Im Command bekomme ich immer die Ausgabe f is null (u ist nicht null)

    C-Quellcode

    1. User u = player.GetUser();
    2. Entities.Faction f = u.Faction;
    3. if(f == null)
    4. {
    5. NAPI.Util.ConsoleOutput("f is null");
    6. return;
    7. }

    Kann jemand helfen?

    Grüße
    datgame
  • Hey,

    das hier ist meine User Klasse:

    C-Quellcode

    1. public class User
    2. {
    3. [Key]
    4. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    5. public int Id { get; set; }
    6. [StringLength(32)]
    7. public string Name { get; set; }
    8. [StringLength(32)]
    9. public string SocialClubName { get; set; }
    10. [StringLength(64)]
    11. public string Password { get; set; }
    12. [Timestamp]
    13. public byte[] RegistrationDate { get; set; }
    14. [EmailAddress]
    15. [StringLength(64)]
    16. public string Email { get; set; }
    17. public AdminLevel AdminLevel { get; set; }
    18. public Faction Faction { get; set; }
    19. }
    Alles anzeigen

    Faction Klasse:

    C-Quellcode

    1. public class Faction
    2. {
    3. [Key]
    4. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    5. public int Id { get; set; }
    6. [StringLength(32)]
    7. public string Name { get; set; }
    8. public int BankAccount { get; set; }
    9. public bool StateOwned { get; set; }
    10. }
    Beim Starten ist der Wert der Fraktion gesetzt:

    C-Quellcode

    1. [ServerEvent(Event.ResourceStart)]
    2. public void OnResourceStart()
    3. {
    4. using (var context = new DatabaseContext())
    5. {
    6. foreach (Faction f in context.Factions)
    7. {
    8. NAPI.Util.ConsoleOutput(f.Name);
    9. }
    10. foreach(User u in context.Users.Include(x => x.Faction))
    11. {
    12. Faction f = u.Faction;
    13. NAPI.Util.ConsoleOutput("User: " + u.Name + " | Faction: " + (f == null ? "null" : f.Name));
    14. }
    15. }
    16. }
    Alles anzeigen
    Im Command ist die Fraktion null:

    C-Quellcode

    1. [Command("f", "~m~Benutzung: ~s~/f [Nachricht]", GreedyArg = true)]
    2. public void CmdFactionF(Client player, string message)
    3. {
    4. User u = player.GetUser();
    5. if(u.Faction == null)
    6. {
    7. ChatService.NotAuthorized(player);
    8. return;
    9. }
    10. string broadcastMessage = "** " + player.Name + ": " + message + " )) **";
    11. ChatService.BroadcastFaction(broadcastMessage, u.Faction);
    12. }
    Alles anzeigen
    Habe jetzt auch einen Befehl, um dem Spieler eine Fraktion zu setzen. Die Fraktion ist danach immer noch null.

    C-Quellcode

    1. [Command("ainvite", "~m~Benutzung: ~s~/ainvite [Name] [Fraktion]")]
    2. public void CmdAdminAinvite(Client player, string name, int faction)
    3. {
    4. if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
    5. {
    6. ChatService.NotAuthorized(player);
    7. return;
    8. }
    9. Client target = ClientService.GetClientByName(name);
    10. if (target == null)
    11. {
    12. ChatService.PlayerNotFound(player);
    13. return;
    14. }
    15. using (var dbContext = new DatabaseContext())
    16. {
    17. Entities.Faction f = dbContext.Factions.FirstOrDefault(x => x.Id == faction);
    18. if(f == null)
    19. {
    20. player.SendChatMessage("~r~[FEHLER]~s~ Diese Fraktion existiert nicht (Liste: ~m~/factionlist).");
    21. return;
    22. }
    23. target.GetUser(dbContext).Faction = f;
    24. dbContext.SaveChanges();
    25. player.SendChatMessage("~b~[ADMIN]~y~ " + player.Name + "~s~ hat den Spieler ~y~" + target.Name + "~s~ administrativ in die Fraktion ~o~" + f.Name + "~s~ eingeladen.");
    26. target.SendChatMessage("~b~[ADMIN]~y~ Du wurdest von ~y~" + player.Name + "~s~ administrativ in die Fraktion ~o~" + f.Name + "~s~ eingeladen.");
    27. }
    28. }
    Alles anzeigen