2012-12-26 21 views
1

在这里,我在asp.net mvc的创建了一个模型结构:为第一在asp.net MVC使用代码页分配权限

public class UserModel 
{ 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public List<Permission> Permissions { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public class Permission 
{ 
    public int PermissionID { get; set; } 
    public bool IsPermit { get; set; } 
    public string Name { get; set; } 
} 

,并在列表中设置一些默认值,并在我加入用户在列表中我分配权限通过UI页面给用户(通过检查权限复选框),这样用户只能访问指定网页:

public static class Repository 
{ 
    public static List<UserModel> GetUsers() 
    { 
     List<UserModel> listUsers = new List<UserModel> 
     { 
      new UserModel 
      { 
       UserId = 1, 
       UserName = "abc", 
       Password = "abc", 
       Permissions = new List<Permission> 
       { 
        new Permission 
        { 
         PermissionID = 1, 
         IsPermit = true, 
         Name = "Page1" 
        }, 
        new Permission 
        { 
         PermissionID = 2, 
         IsPermit = false, 
         Name = "Page2" 
        }, 
        new Permission 
        { 
         PermissionID = 3, 
         IsPermit = false, 
         Name = "Page3" 
        }, 
        new Permission 
        { 
         PermissionID = 4, 
         IsPermit = false, 
         Name = "Page4" 
        } 
       }, 
       FirstName = "Rohit", 
       LastName = "Sharma" 
      }, 

      new UserModel 
      { 
       UserId = 2, 
       UserName = "xyz", 
       Password = "xyz", 
       Permissions = new List<Permission> 
       { 
        new Permission 
        { 
         PermissionID = 1, 
         IsPermit = false, 
         Name = "Page1" 
        }, 
        new Permission 
        { 
         PermissionID = 2, 
         IsPermit = true, 
         Name = "Page2" 
        }, 
        new Permission 
        { 
         PermissionID = 3, 
         IsPermit = true, 
         Name = "Page3" 
        }, 
        new Permission 
        { 
         PermissionID = 4, 
         IsPermit = true, 
         Name = "Page4" 
        } 
       }, 
       FirstName = "Rahul", 
       LastName = "Sharma" 
      } 
     }; 

     return listUsers; 
    } 
} 

现在我想先用代码做同样的数据库的方法借助DbContext类。我有一个数据库表中的页面权限的静态列表(Id = 1,Name = Page1; Id = 2,Name = Page2; Id = 3,Name = Page3; Id = 4,Name = Page4)。

我为数据库创建模型结构时感到困惑。请指导我如何创建模型结构和结构与表格的映射。

我有一个表(权限)在我的数据库与默认行。

ID Name 

1 Page1 

2 Page2 

3 Page3 

4 Page4 

现在,当我将我的用户权限分配通过静态复选框(第1页,第二页,第三页第4页和)用户。这就是为什么我在包含页面列表的数据库中创建静态表格的原因。我的用户表最初是空白的。

User 

Id   int    NotNull 

UserName  nvarchar(100) AllowNull 

Password  nvarchar(100) AllowNull 

FirstName  nvarchar(100) AllowNull 

LastName  nvarchar(100) AllowNull 
+0

通过使用上述结构可以从“Permission”表中检索数据吗?我觉得你没有办法.B'cos你的模型和表格属性是完全不同的???你目前为了从数据库获取许可数据而编写的代码是什么?代码也是。你的视图代码也需要。 – Sampath

回答

0

您可以在您使用代码first.You都当你第一次使用的代码(但是可以当你使用流利的API改变),以保持惯例使用下文提到的结构。

模型类

public class User 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public string Password { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public virtual ICollection<Permission> Permissions { get; set; } 

} 

public class Permission 
{ 
    public int Id { get; set; } 
    public bool IsPermit { get; set; } 
    public string Name { get; set; } 

    public virtual User { get; set; } 

} 

(这将自动generate.But如果你愿意,你可以手动创建也)

Users 

Id   int    NotNull 
UserName  nvarchar(100) AllowNull 
Password  nvarchar(100) AllowNull 
FirstName  nvarchar(100) AllowNull 
LastName  nvarchar(100) AllowNull 


Permissions 

Id   int    NotNull 
IsPermit  bit    AllowNull 
Name   nvarchar(100) AllowNull 
User_Id  int    NotNull 

的DbContext派生类

public class UserEntities : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
     public DbSet<Permission> Permissions { get; set; } 
    } 

查看更多信息检查Code-First Development with Entity Framework

我希望这会对您有所帮助。

+0

谢谢你的答复。但我已经有一个数据库表(权限)的权限的静态列表。在这种情况下,权限重复为用户添加的数量。有没有其他的方式可以做到这一点,权限不会重复? –

+0

@ user1273915你目前使用第一种方法吗?我认为你需要根据最好的方式重新设计这些东西(代码首先使用的约定)。 – Sampath

+0

是的,我目前正在使用代码优先方法。你能解释我怎么能实现这个目标?谢谢。 –