2012-12-26 60 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

是的,我目前正在使用代碼優先方法。你能解釋我怎麼能實現這個目標?謝謝。 –