2016-11-21 2 views
0

Ich habe Klassen:viele zu viele Beziehung Sammlung nicht geladen

  • statische Klasse Programm
  • public class mycontext
  • public class User
  • public class Berechtigungen
  • Öffentliche statische Klasse Localstorage
  • public enum Listenelement

Folowing sind Codes für jeden:

 static class Program { 
      static void Main() { 
       Permissions p = new Permissions() { PermissionName = Permission.ReadUser } ; 
       User mirian = new User() { UserName = "miri", Password="123", PasswordChanged=true, Permissions = new List<Permissions>() {} }; 
       mirian.Permissions.Add(p); 
       using (var db = new MyContext()) { 
        db.Permissions.Add(p); 
        db.Users.Add(mirian); 
        db.SaveChanges(); 
       } 
      } 
     } 

     public class MyContext : DbContext { 
      public MyContext() : base("AppEntityDB") { 
       System.Data.Entity.Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>()); 
      } 
      public virtual DbSet<User> Users { get; set; } 
      public virtual DbSet<Permissions> Permissions { get; set; } 
     } 

     public class User : BaseCore { 
       MyContext _db = new MyContext(); 
       [Key] 
       public int ID { get; set; } 
       [MaxLength(20)] 
       public string UserName { get; set; } 
       public ICollection<Permissions> Permissions { get; set; } 

       public bool Login(string username, string password) { 
        using (_db) { 
        var _userlist = _db.Users.Where(c => c.IsActive == true 
              && c.UserName == username 
              && c.Password == password).SingleOrDefault(); 
        if (_userlist != null) { 
         LocalStorage.CurrentUser = _userlist; 
         return true; 
        } 
        return false; 
        } 
       } 
     } 

     public class Permissions : BaseCore { 
      [Key] 
      public int ID { get; set; } 

      public Permission PermissionName{ get; set; } 

      public ICollection<User> User { get; set; } 
     } 

public enum Permission : byte { 
     ManageAccounts = 0, 
     ReadUser = 1, 
     WriteUser = 2, 
     ReadProduct = 3, 
     WriteProduct = 4, 
    } 

    public static class LocalStorage { 
     public static User CurrentUser { get; internal set; } 
    } 

auf Call i user.login() Methode LocalStorage.CurrentUser den aktuellen Benutzerobjekt von der Basis durch Entität + linq genommen zuordnet.

Wenn ich LocalStorage.CurrentUser.Permissions aufrufen, erwarte ich, dass es eine Liste der Berechtigungen zurückgibt, die aktuellen Benutzer haben. aber es bekommt einen Wert von null

irgendein Hinweis?

Antwort

1

Ich bin mir nicht sicher, aber es könnte lazy loading sein und nicht zugehörige Entitäten laden.