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
任何線索?