程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC 權限管理(二) 實體模型設計

ASP.NET MVC 權限管理(二) 實體模型設計

編輯:關於ASP.NET

上一篇文章寫了關於項目的基本開發組織和項目用到的一些東西,這篇文章就開始設計實體模型了,好了,廢話不多說。

一、實體模型基類

因為每個模型實體都需要有一個編號,狀態這些基本的東西,為了遵守MVC的“不要重復自己”的原則,共有的東西就寫到一個公共類去,以前開發我都是用自增的Int作為主鍵,這一次呢就打算試用一下GUID作為數據庫的主鍵編號,要是有不懂的地方,大家趕緊指出來啊~~

有碼有真相:

/// <summary>
    /// 模型基類
    /// </summary>
   public class BaseEntity
    {
        private string id;
        [Key]
        [Display(Name = "主鍵")]
        public string Id
        {
            get
            {
                if (id == null)
                {
                    return Guid.NewGuid().ToString();
    
                }
                else
                {
                    return id;
                }
    
            }
            set
            {
                id = value;
    
            }
        }
    
    
    
        [Display(Name = "狀態")]
        [Required(ErrorMessage = "狀態不能為空!")]
        public bool Enabled { get; set; }
    }

二、實體模型

tbUser 【用戶模型】

tbRole   【角色模型】

tbModule  【系統模塊模型】

tbAction  【系統行為模型】

tbActionLog 【行為日志模型】

三、模型之間的關系

用戶模型對應多個角色模型,角色模型對應多個用戶模型,也就是說一個用戶能屬於多個角色,一個角色擁有N多個用戶;

角色模型對應多個系統模型,也就是說一個角色擁有多個系統模塊的權限。

系統行為模型和系統行為日志模型就是一個日志而已,大家看看肯定讷讷感懂的,我就不墨跡了。

四、數據訪問接口層和數據訪問實現層的公共類的實現

IBaseDao 數據訪問接口層,代碼如下:

/// <summary>
    /// 增刪改查的公共接口,這個接口定義泛型的增刪改查
    /// </summary>
    /// <typeparam name="T">實體</typeparam>
    public interface IBaseDao<T>
    {
        #region 查詢普通實現方案(基於Lambda表達式的Where查詢)
        /// <summary>
        /// 獲取所有Entity
        /// </summary>
        /// <param name="exp">Lambda條件的where</param>
        /// <returns></returns>
        IEnumerable<T> GetAllEntities(Func<T, bool> exp);
        /// <summary>
        /// 計算總個數(分頁用到)
        /// </summary>
        /// <param name="exp">Lambda條件的where</param>
        /// <returns></returns>
        int GetEntitiesCount(Func<T, bool> exp);
    
        /// <summary>
        /// 分頁查詢(Linq分頁方式)
        /// </summary>
        /// <param name="pageNumber">當前頁</param>
        /// <param name="pageSize">分頁大小</param>
        /// <param name="orderName">lambda排序名稱</param>
        /// <param name="sortOrder">排序,升序or降序</param>
        /// <param name="exp">lambda查詢條件where</param>
        /// <returns></returns>
        IEnumerable<T> GetEntitiesForPaging(int pageNumber, int pageSize, Func<T, string> orderName, string sortOrder, Func<T, bool> exp);
    
        /// <summary>
        /// 根據條件查找單個實體
        /// </summary>
        /// <param name="exp">lambda查詢條件where</param>
        /// <returns></returns>
        T GetEntity(Func<T, bool> exp);
    
    
        #endregion
    
            
    
        #region 添刪改
    
        /// <summary>
        /// 插入實體
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        bool Insert(T entity);
    
        /// <summary>
        /// 更新實體
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        bool Update(T entity);
    
        /// <summary>
        /// 刪除實體
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        bool Delete(T entity);
    
    
        #endregion
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved