2016-11-21 21 views
0

I持つクラス:ロードしていない多くの関係コレクションに多くの

  • 静的クラスプログラム
  • パブリッククラスあるMyContext
  • パブリッククラスユーザー
  • パブリッククラス権限
  • のpublic staticクラスのlocalStorage
  • 公開列挙項目
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; } 
    } 

iがエンティティ+ LINQによってベースから採取した現在のユーザオブジェクトにLocalStorage.CurrentUserを割り当てるUser.Login()メソッドを呼び出します。

私がLocalStorage.CurrentUser.Permissionsを呼び出すと、私はそれが現在のユーザーを持つアクセス許可の一覧を返すと予想します。値はnull

となるでしょうか?

答えて

1

確かにわかりませんが、lazy loadingとそれに関連するエンティティが読み込まれていない可能性があります。

関連する問題