首先給上項目的整體框架圖:,這里我沒有使用BLL,因為感覺太煩了就沒有去使用。
那么接下來我們首先先去Model層中添加Model。
管理員類:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 管理員 /// </summary> public class Admin { /// <summary> /// 管理員ID(主鍵) /// </summary> [Key] public int Id { get; set; } /// <summary> /// 用戶名 /// </summary> [StringLength(30)] [Column(TypeName="varchar")] public string AdminName { get; set; } /// <summary> /// 手機號碼 /// </summary> [StringLength(11)] [Column(TypeName = "varchar")] public string Mobile { get; set; } /// <summary> /// 郵箱 /// </summary> [StringLength(100)] [Column(TypeName = "varchar")] public string Email { get; set; } /// <summary> /// 密碼 /// </summary> [StringLength(120)] [Column(TypeName = "varchar")] public string Password { get; set; } /// <summary> /// 密碼鹽值 /// </summary> [StringLength(10)] [Column(TypeName = "varchar")] public string Salt { get; set; } /// <summary> /// 對應角色Id /// </summary> public int AuthoryId { get; set; } /// <summary> /// 添加時間 /// </summary> public DateTime CreateTime { get; set; } /// <summary> /// 是否超級管理員 /// </summary> public Byte IsSuperAdmin { get; set; } /// <summary> /// 上次登錄時間 /// </summary> public DateTime LastLoginTime { get; set; } /// <summary> /// 上次登錄地址 /// </summary> [StringLength(50)] [Column(TypeName = "nvarchar")] public string LastLoginAddress { get; set; } /// <summary> /// 上次登錄端口基本信息 /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string LastLoginInfo { get; set; } /// <summary> /// 上次登錄Ip /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string LastLoginIp { get; set; } public Admin(){ CreateTime = DateTime.Now; LastLoginTime = DateTime.Now; } } }
[Key]這個事用來設置主鍵的,[StringLength(30)]是用來控制在創建數據庫的時候控制長度,[Column(TypeName="varchar")]是用來創建該字段在數據庫中的類型。我在創建的時候沒有使用外鍵,因本人對外鍵不熟所以沒使用。Byte類型就相當於數據庫的tinyint類型。
頁面與頁面動作聯系表:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 頁面與頁面動作聯系表 /// </summary> public class ActionToPage { /// <summary> /// 自增Id /// </summary> [Key] public int Id { get; set; } /// <summary> /// 頁面Id /// </summary> public int PageId { get; set; } /// <summary> /// 動作集合(用json存儲) /// </summary> [StringLength(300)] [Column(TypeName = "varchar")] public string ActionList { get; set; } /// <summary> /// 是否刪除 /// </summary> public Byte IsDelete { get; set; } } }
管理員登錄日志:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 管理員登錄日志 /// </summary> public class AdminLoginLog { /// <summary> /// 管理員登錄記錄Id /// </summary> [Key] public int AdminLoginLogId { get; set; } /// <summary> /// 管理員Id /// </summary> public int AdminId { get; set; } /// <summary> /// 管理員登錄地址 /// </summary> [StringLength(50)] [Column(TypeName = "nvarchar")] public string AdminLoginAddress { get; set; } /// <summary> /// 管理員登錄IP /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string AdminLoginIP { get; set; } /// <summary> /// 管理員登錄時間 /// </summary> public DateTime AdminLoginTime { get; set; } /// <summary> /// 瀏覽器信息或者APP信息 /// </summary> [Column(TypeName = "varchar")] [StringLength(50)] public string AdminLoginInfo { get; set; } public AdminLoginLog() { AdminLoginTime = DateTime.Now; } } }
管理員操作類:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 管理員操作類 /// </summary> public class AdminOperation { [Key] public int AdminOperationId { get; set; } /// <summary> /// 管理員Id /// </summary> public int AdminId { get; set; } /// <summary> /// 權限Id /// </summary> public int AuthoryId { get; set; } /// <summary> /// 動作Id(1:增,2:修改,3:查看,4:刪除) /// </summary> public int Action { get; set; } /// <summary> /// 操作標題 /// </summary> [StringLength(15)] [Column(TypeName = "nvarchar")] public string Title { get; set; } /// <summary> /// 操作詳情 /// </summary> [StringLength(200)] [Column(TypeName = "nvarchar")] public string Content { get; set; } /// <summary> /// 操作IP /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string OperateIP { get; set; } /// <summary> /// 操作地址 /// </summary> [StringLength(50)] [Column(TypeName = "nvarchar")] public string OperateAddress { get; set; } /// <summary> /// 瀏覽器信息或者APP信息 /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string OperateInfo { get; set; } /// <summary> /// 創建時間 /// </summary> public DateTime CreateTime { get; set; } public AdminOperation() { CreateTime = DateTime.Now; } } }
用戶與頁面和頁面動作聯系表:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 用戶與頁面和頁面動作聯系表 /// </summary> public class AdminToPage { /// <summary> /// /// </summary> [Key] public int Id { get; set; } /// <summary> /// 管理員Id /// </summary> public int AdminId { get; set; } /// <summary> /// 頁面Id /// </summary> public int PageId { get; set; } /// <summary> /// 動作集合(用json存儲) /// </summary> [StringLength(300)] [Column(TypeName = "varchar")] public string ActionList { get; set; } /// <summary> /// 是否顯示 /// </summary> public Byte IsShow { get; set; } /// <summary> /// 是否刪除 /// </summary> public Byte IsDelete { get; set; } } }
角色:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 角色 /// </summary> public class Authory { /// <summary> /// 角色Id /// </summary> [Key] public int Id { get; set; } /// <summary> /// 角色名稱 /// </summary> [StringLength(15)] [Column(TypeName = "varchar")] public string Name { get; set; } /// <summary> /// 角色簡介 /// </summary> [StringLength(30)] [Column(TypeName = "varchar")] public string Intro { get; set; } /// <summary> /// 角色狀態(0:正常;1:已刪除) /// </summary> public Byte State { get; set; } } }
角色與頁面和頁面動作之間聯系:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 角色與頁面和頁面動作之間聯系 /// </summary> public class AuthoryToPage { /// <summary> /// 自增Id /// </summary> [Key] public int Id { get; set; } /// <summary> /// 權限Id /// </summary> public int AuthoryId { get; set; } /// <summary> /// 頁面Id /// </summary> public int PageId { get; set; } /// <summary> /// 動作集合(用json存儲) /// </summary> [StringLength(300)] [Column(TypeName = "varchar")] public string ActionList { get; set; } /// <summary> /// 是否顯示 /// </summary> public Byte IsShow { get; set; } /// <summary> /// 是否刪除 /// </summary> public Byte IsDelete { get; set; } } }
頁面動作:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 頁面動作 /// </summary> public class PageAction { /// <summary> /// 動作Id /// </summary> [Key] public int Id { get; set; } /// <summary> /// 動作名稱 /// </summary> [StringLength(15)] [Column(TypeName = "varchar")] public string Name { get; set; } /// <summary> /// 動作代碼(頁面代碼) /// </summary> [StringLength(35)] [Column(TypeName = "varchar")] public string ActionCode { get; set; } /// <summary> /// 是否顯示 /// </summary> public Byte IsShow { get; set; } /// <summary> /// 動作等級 /// </summary> public Byte ActionLevel { get; set; } } }
頁面:

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.Model { /// <summary> /// 頁面 /// </summary> public class PageMenu { /// <summary> /// /// </summary> [Key] public int Id { get; set; } /// <summary> /// 頁面Id /// </summary> public int PId { get; set; } /// <summary> /// 頁面名稱 /// </summary> [StringLength(15)] [Column(TypeName = "varchar")] public string Name { get; set; } /// <summary> /// 頁面路徑 /// </summary> [StringLength(50)] [Column(TypeName = "varchar")] public string PageUrl { get; set; } /// <summary> /// 是否顯示 /// </summary> public byte IsShow { get; set; } /// <summary> /// 排序 /// </summary> public int OrderNum { get; set; } /// <summary> /// 頁面圖標 /// </summary> [StringLength(30)] [Column(TypeName = "varchar")] public string Ico { get; set; } } }
以上就是Model了。
下面的是對基礎倉儲的編輯(也就是DAL):
首先安裝下EF,選擇6.0安裝即可
首先是DbContext:這是EF與數據庫連接的上下文。

using AuthorDesign.Model; using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AuthorDesign.DAL { public class AuthorDesignContext : DbContext { public AuthorDesignContext() : base("AuthorDesignContext") { } public DbSet<ActionToPage> ActionToPages { get; set; } public DbSet<Admin> Admins { get; set; } public DbSet<AdminLoginLog> AdminLoginLogs { get; set; } public DbSet<AdminOperationRepository> AdminOperations { get; set; } public DbSet<AdminToPage> AdminToPages { get; set; } public DbSet<Authory> Authories { get; set; } public DbSet<AuthoryToPage> AuthoryToPages { get; set; } public DbSet<PageAction> PageActions { get; set; } public DbSet<PageMenu> PageMenus { get; set; } } }
感覺類有點多,下篇繼續寫關於DAL的,這里一些都是簡單的代碼。可能本人寫的不好,各位看官要是那里可以改進的或者那里有疑問的可以問我。