亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

以一個權限系統來告別WebForm —(一)項目整休架構設計與數據庫設計

2019-11-17 02:09:15
字體:
來源:轉載
供稿:網友

以一個權限系統來告別WebForm —(一)項目整休架構設計與數據庫設計

在本節我想與大家與分享一下,我所將要做的權限系統的架構和數據庫的表的設計。請各位大神們對我項目中設計的不足之處進行指導,讓我得以更好的寫完它,留給需要它的人。

我的項目架構如下圖所示:

如上圖所示,在數據訪問層,我采用了抽象工廠的方式,來對數據訪問層和業務邏輯層解耦,當然如果你想更高大上一些,可以用第三方的框架,比如SPRing.Net ,Autofac來實現。解耦的好處在于可以方便的切換數據庫,當數據庫變更時,只需換一下對應的數據訪問DAL就行,本系列中,我所采用的是SQLServer。寫到這我想在如下這個大數據時代,MongoDB其實也是不錯的。后面有機會,可以開一個MongoDB的專題和大家一起來使用一下MongoDB學習一下它。對于抽象工廠來實現業務邏輯層與數據訪問層的解耦實現代碼如下,主要用到了反射,面向接口編程。

配置:

<appSettings>  <add key="DAL" value="MCFramework.SQLDAL"/>    <!--頁容量-->  <add key="PageSize" value="20"/></appSettings>
View Code

抽象工廠:

namespace MCFramework.RepositoryFactory{    public class RepositoryFactory    {        public RepositoryFactory()        { }        private static readonly string AssemblyPath =ConfigurationSettings.AppSettings["DAL"];        #region CreateObject        //不使用緩存        private static object CreateObjectNoCache(string AssemblyPath, string classNamespace)        {            try            {                object objType = Assembly.Load(AssemblyPath).CreateInstance(classNamespace);                return objType;            }            catch(System.Exception ex)            {                string str=ex.StackTrace;// 記錄錯誤日志                return null;            }        }        //使用緩存        //private static object CreateObject(string AssemblyPath, string classNamespace)        //{        //    object objType = DataCache.GetCache(classNamespace);        //    if (objType == null)        //    {        //        try        //        {        //            objType = Assembly.Load(AssemblyPath).CreateInstance(classNamespace);        //            DataCache.SetCache(classNamespace, objType);// 寫入緩存        //        }        //        catch//(System.Exception ex)        //        {        //            //string str=ex.Message;// 記錄錯誤日志        //        }        //    }        //    return objType;        //}        #endregion        /// <summary>        /// 用戶倉儲        /// </summary>        public static ISystem_EmployeeRepository System_EmployeeRepository { get { return (ISystem_EmployeeRepository)CreateObjectNoCache(AssemblyPath, AssemblyPath + ".System_EmployeeRepository"); } }        /// <summary>        ///菜單倉儲        /// </summary>        public static ISystem_MenuRepository  System_MenuRepository { get { return (ISystem_MenuRepository)CreateObjectNoCache(AssemblyPath, AssemblyPath + ".System_MenuRepository"); } }        /// <summary>        ///角色倉儲        /// </summary>        public static ISystem_RoleRepository System_RoleRepository { get { return (ISystem_RoleRepository)CreateObjectNoCache(AssemblyPath, AssemblyPath + ".System_RoleRepository"); } }        /// <summary>        ///按鈕倉儲        /// </summary>        public static ISystem_ButtonRepository System_ButtonRepository { get { return (ISystem_ButtonRepository)CreateObjectNoCache(AssemblyPath, AssemblyPath + ".System_ButtonRepository"); } }    }}
View Code

所有的訪問數據庫的操作都用接口來約束:

namespace MCFramework.IDAL{    public interface IBaseRepository<T> where T:class    {        int Add(T model);        int UpdateDel(string ids, bool isDel);        int Del(string ids);        int Update(T model);        DataSet GetListByProc(string procName, System.Data.SqlClient.SqlParameter[] paras);        DataSet GetModel(string Id);        DataSet GetList(string strWhere);    }}
View Code
namespace MCFramework.IDAL{   public interface ISystem_ButtonRepository:IBaseRepository<System_ButtonModel>    {        bool IsExit(string ButtonCode);    }}
View Code

接口的實現:

namespace MCFramework.SQLDAL{    /// <summary>    /// Author: MaChun    /// Description: DALTier -- the DAL class of System_Button.    /// Datetime:2015/6/8 13:00:35    /// </summary>    public class  BaseSystem_ButtonRepository: IBaseRepository<System_ButtonModel>    {            //創建企業庫連接     public  SqlDataaccess db = SqlDataAccess.CreateDataAccess();            #region 新增一條記錄 Add(System_ButtonModel model)        /// <summary>        /// 新增一條記錄        /// </summary>        public int Add(System_ButtonModel  model)        {            int result = 0;            try            {                StringBuilder strSql = new StringBuilder();                strSql.Append("insert into System_Button(");                strSql.Append("SBT_Guid,SBT_ButtonCode,SBT_ButtonName,SBT_IconUrl,SBT_IconCSS,SBT_CreateBy,SBT_CreatedDate)");                strSql.Append(" values (");                strSql.Append("@SBT_Guid,@SBT_ButtonCode,@SBT_ButtonName,@SBT_IconUrl,@SBT_IconCss,@SBT_CreateBy,@SBT_CreatedDate)");                strSql.Append(";select @@IDENTITY");                SqlParameter[] parameters = {                    new SqlParameter("@SBT_Guid", SqlDbType.VarChar,36),                    new SqlParameter("@SBT_ButtonCode", SqlDbType.VarChar,200),                    new SqlParameter("@SBT_ButtonName", SqlDbType.VarChar,100),                    new SqlParameter("@SBT_IconUrl", SqlDbType.VarChar,100),                    new SqlParameter("@SBT_IconCss", SqlDbType.VarChar,100),                    new SqlParameter("@SBT_CreateBy", SqlDbType.VarChar,100),                    new SqlParameter("@SBT_CreatedDate", SqlDbType.DateTime,8)};                                parameters[0].Value = model.SBTGuid;                parameters[1].Value = model.SBTButtonCode;                parameters[2].Value = model.SBTButtonName;                parameters[3].Value = model.SBTIconUrl;                parameters[4].Value = model.SBTIconCss;                parameters[5].Value = model.SBTCreateBy;                parameters[6].Value = model.SBTCreatedDate;                                result =   db.ExecuteNonQuery(strSql.ToString(), parameters);            }            catch (Exception ex)            {                throw ex;            }            return result;        }        #endregion         #region 邏輯刪除 UpdateDel(
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲热线99精品视频| 另类美女黄大片| 久久国产精品久久精品| 欧美性xxxxx| 中文字幕欧美在线| 亚洲精品在线观看www| 欧美精品久久久久| 欧美精品久久久久久久免费观看| 久久久亚洲天堂| 欧美激情视频在线观看| 欧美疯狂做受xxxx高潮| 亚洲女人被黑人巨大进入al| 日韩av在线免费看| 成人做爰www免费看视频网站| 国产精品日韩专区| 国产精品精品一区二区三区午夜版| 亚洲高清久久久久久| 欧美激情一区二区三区在线视频观看| 亚洲精品www久久久久久广东| 欧美专区第一页| 国产精品久久久久aaaa九色| 久久精彩免费视频| 成人黄色午夜影院| 亚洲成年网站在线观看| 欧美日韩中文字幕综合视频| 欧美丝袜一区二区| 久久久精品亚洲| 久久精品电影网| 欧美日韩亚洲网| 国产在线播放91| 国产亚洲欧美aaaa| 欧美一区二区.| 国内精品久久久久久中文字幕| 欧美刺激性大交免费视频| 久久91精品国产| 欧美激情欧美激情| 欧美日韩午夜激情| 中文字幕亚洲字幕| 不卡伊人av在线播放| 91九色视频导航| 亚洲成人动漫在线播放| 欧美国产乱视频| 国产精品久久久久久超碰| 热久久视久久精品18亚洲精品| 久久天天躁狠狠躁夜夜爽蜜月| 久久久久久综合网天天| 亚洲成人激情视频| 国产精品国产三级国产aⅴ9色| 精品国产一区二区三区久久狼黑人| 2019中文在线观看| 国产精品美女久久久免费| 欧美日韩日本国产| 黑人欧美xxxx| 色老头一区二区三区在线观看| 精品精品国产国产自在线| 久久久久久久久久久成人| 久久久999国产精品| 麻豆一区二区在线观看| 欧美精品在线极品| 欧美激情久久久| 国产91免费观看| 亚洲天堂开心观看| 中文字幕av一区中文字幕天堂| 亚洲va久久久噜噜噜| 久久国产精品电影| 欧美精品激情在线| 亚洲理论在线a中文字幕| 亚洲男子天堂网| 亚洲精品动漫久久久久| 久久久精品国产网站| 日韩经典一区二区三区| 国产欧亚日韩视频| 最近2019年日本中文免费字幕| 精品偷拍一区二区三区在线看| 国产一区二区三区高清在线观看| 日韩高清有码在线| 色悠悠久久久久| 日本91av在线播放| 欧美成人免费一级人片100| 亚洲丁香久久久| 51色欧美片视频在线观看| 国产欧美日韩91| 日韩精品在线看| 国产亚洲欧洲黄色| 色偷偷亚洲男人天堂| 97视频在线观看免费高清完整版在线观看| 亚洲视频电影图片偷拍一区| 亚州国产精品久久久| 精品国产一区av| 久久99精品久久久久久青青91| 一区二区中文字幕| 国产福利视频一区二区| 亚洲视频一区二区三区| 亚洲美女中文字幕| 日韩一区二区三区在线播放| 日韩精品在线视频观看| 欧美日韩国产精品| yw.139尤物在线精品视频| 欧美一区二区三区免费观看| 国产精品老牛影院在线观看| 欧洲午夜精品久久久| 国产91精品久久久久久| 亚洲精品中文字| 永久免费毛片在线播放不卡| 久久中文字幕国产| 精品视频偷偷看在线观看| 国产精品video| 91高清免费视频| 中文字幕日韩综合av| 日本精品视频在线播放| 欧美日韩另类在线| 国产一区二区av| 欧美日韩一区二区三区在线免费观看| 国产精品视频自在线| 精品久久久久久久久久国产| 国产精品自拍偷拍视频| 91免费的视频在线播放| 欧美精品免费在线观看| 在线观看亚洲区| 欧美日韩精品在线观看| 欧美午夜www高清视频| 亚洲欧美国产制服动漫| 一本大道久久加勒比香蕉| 日韩亚洲欧美中文在线| 中文字幕日韩欧美在线视频| 亚洲天堂男人的天堂| 亚洲男人的天堂在线| 久久久久久com| 精品国产欧美一区二区三区成人| 日本精品一区二区三区在线播放视频| 国产综合福利在线| 性欧美激情精品| 亚洲一区www| 亚洲一区二区中文字幕| 久久99精品国产99久久6尤物| 美女少妇精品视频| 国产精品视频在线播放| 欧美黑人xxxx| 亚洲男人天堂古典| 精品亚洲va在线va天堂资源站| 91国产美女视频| 亚洲国产婷婷香蕉久久久久久| 亚洲国产黄色片| 欧日韩在线观看| 97精品一区二区三区| 欧美黄色小视频| 亚洲国产美女精品久久久久∴| 国产人妖伪娘一区91| www.日韩欧美| 国产精品免费久久久久影院| 成年人精品视频| 日韩欧美中文字幕在线播放| 欧美日韩成人在线观看| 亚洲精选一区二区| 岛国av一区二区在线在线观看| 亚洲а∨天堂久久精品喷水| 日韩av不卡在线| 亚洲综合视频1区| 亚洲欧美制服丝袜| 欧美老少做受xxxx高潮| 欧美精品18videosex性欧美| 亚洲精品第一国产综合精品| 人妖精品videosex性欧美| 欧美成人精品xxx|