2016-11-21 32 views
0

我有類:多對多的關係收集不加載

  • 靜態類節目
  • 公共類MyContext
  • 公共類用戶
  • 公共類權限
  • 公共靜態類localStorage的
  • public enum列表項目

如下因素是代碼對每個:

 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; } 
    } 

在登錄我打電話User.Login()方法分配LocalStorage.CurrentUser到由實體+ LINQ從底部取出當前用戶對象。

當我打電話給LocalStorage.CurrentUser.Permissions時,我期望它返回具有當前用戶的權限列表。但它得到的價值null

任何線索?

回答