2016-11-21 3 views
0

У меня есть классы:многие ко многим коллекции отношений не загружая

  • статический класс Программа
  • общественного класса MyContext
  • общественного класса пользователя
  • права общественного класса
  • общественный статический класс LocalStorage
  • public enum Перечень статей

folowing являются кодами для каждого:

 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, я ожидаю, что он вернет список разрешений, имеющих текущего пользователя. но он получает значение

любая подсказка?

ответ

1

Я не уверен, но это может быть lazy loading и его не загружать связанные объекты.

Смежные вопросы