1

在这里,我在 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

现在,当我添加用户时,我通过静态复选框(Page1、Page2、Page3 和 Page4)为该用户分配权限。这就是我在包含页面列表的数据库中创建静态表的原因。我的用户表最初是空白的。

User

Id            int             NotNull

UserName      nvarchar(100)   AllowNull

Password      nvarchar(100)   AllowNull

FirstName     nvarchar(100)   AllowNull

LastName      nvarchar(100)   AllowNull
4

1 回答 1

0

当您首先使用代码时,您可以使用下面提到的结构。当您首先使用代码时,您必须保持约定(但是当您使用 Fluent 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;  }

}

表格(这将自动生成。但如果您愿意,也可以手动创建)

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; }
    }

有关更多信息,请查看使用实体框架进行代码优先开发

我希望这对你有帮助。

于 2012-12-26T16:05:18.677 回答