ASP.NET MVC+EF架構+EasyUI實作權限管系列(1)-架構搭建
前言:這篇部落格開始我們便一步一步的來實作這個權限系統的初步設計-架構搭建,首先我要說的是我們需要開發工具Visual Studio 2012或者10也行,其次是我們要有SQL Server資料庫,如果是Visual Studio 2010的話,你還要安裝MVC4的開發檔案,這個是嗎?我不記得了,誰可以回答我一下的,我一直用2012,都是內建好的,是以不太清楚。因為這篇部落格比較簡單,隻是建立一個簡單的架構,是以我順便進行一下MVC的知識補充,後面我也會這樣穿插着介紹項目中遇到的技術,下面開始今天之旅。
在學習MVC之前,我們有必要知道這些知識點(自動屬性,隐式類型var,對象初始化器和集合初始化器,匿名類,擴充方法,Lambda表達式),如果你還不知道的話就請看我下面的簡單的介紹,如果你已經知道的話,就可以掠過這篇部落格,看下面我建立的項目的初步圖像,然後下篇我們開始簡單的介紹。
1.自動屬性
(1)自動屬性(Auto-Implemented Properties),C#自動屬性可以避免原來我們手工的來聲明一個私有成員變量以及和屬性get,set的書寫。
public class Kencery //聲明一個Kencery的類
{
public int ID{get;set;} //主鍵ID
public string Name{get;private set;} //隻讀屬性名字
public int Age{get;set;} //年齡
}
2.隐式類型var
(1)現在越來越多的項目中你可以看到var,這是什麼意思呢?其實這就是C#3.0新特性提供的隐士類型var,var關鍵字訓示編譯器根據初始化語句右側的表達式推斷變量的類型。
var Kencery=”大家晚上好”; //定義變量
var list=new List<int>(); //定義一個List集合
var Kencery=new{ID=1,Name=”HYL”,age=24} //對象初始化起定義的類型
var geners = from n in StoreContract.ProductCatalogs
where n.IsSystem == false
select n;
return View(geners);
//Linq的使用,這個在後面我們會大量的使用,大家沒學過的可以自學。
(2) var有這麼大的功能,那麼他有什麼缺點呢,我們這裡列舉大緻一下
1)隻有在同一個語句中聲明和初始化局部變量時,才能使用var,不能将該變量初始化為null,方法組或者匿名方法。
2)不能将var用于類範圍的域。
3)由var聲明的變量不能用在初始化表達式中,換句話說,此表達式是合法的:int i=(i=20);,但是後面的這個表達式會産生編譯錯誤:var i=(i=20)。
4)不能在同一個語句中初始化多個隐式類型的變量。
5)如果範圍中有一個名為var的類型,則var關鍵字将解析為該類型名稱,而不做為隐式類型局部變量聲明的一部分去處理。
3.匿名類
(1)将一組隻讀屬性封裝到單個對象中,而無需首先顯示定義一個類型,類型名由編譯器生成,并且不能在源代碼級使用,每個屬性的類型由編譯器推斷。[var]
(2)用來初始化屬性的表達式不能是null,匿名函數和指針類型。
var Kencery=new{ID=1,Name=”HYL”,Age=24}
4.對象初始化器和集合初始化器
(1)對象初始化器是利用了編譯器對對象中對外可見的字段或者屬性進行按序指派,在編譯還是隐式調用了構造函數,對字段或屬性的指派可以是一個或者多個。
List<Kencery> kencery=new List<Kencery>{ //Kencery類
new Kencery{ID=1,Name=”Hanyinglong”,Age=19},
New Kencery{ID=2,Name=”HYL”},
null
};
Person p=new Person{ ID=1,Name=”HYL”,Age=19 };
5.擴充方法
(1)擴充方法是一種特殊的靜态方法,它定義在一個靜态類中,但可以在其他類的對象上向調用執行個體方法那樣進行調用。是以,通過擴充方法,我們就可以在不修改一個類型的前提下對一個類型進行功能上的擴充,這種方法并不會産生新的類型,而是采用向已有類中加入新方法的方式來完成功能的擴充。
(2)在對已有類進行擴充時,我們需要将所有的擴充方法都寫在一個靜态類中,這個靜态類就相當于存放擴充方法的容器,所有的擴充方法都可以寫在這裡面。擴充方法與普通方法的聲明方式不同,擴充方法的第一個參數以this關鍵字開始,後面跟被擴充的類型,然後才是真正的參數清單。
public static 傳回類型 擴充方法名(this 要擴充的類型 參數名稱[,擴充方法參數清單])
{
}
public static int ToInt32(this string s) //擴充方法将字元串轉換為整形
{
return Int32.Parse(s);
}
6.Lambda表達式
(1) ”Lambda表達式”是一個匿名函數,他可以包含表達式和語句,可用于建立委托。
(2) 運算符 =>,該運算符讀作:”goes to”。
(3) 格式:(input parameters)=>expression
delegate bool DelDemo(int a,int b); //定義委托
DelDemo Lambda=(int a,int b)=>a>b //使用Lambda表達式表示a是否大于b
Console.WriteLine(Lambda(1,4));
7.項目整體架構流程圖
(1)上面扯了這麼多,其實跟我們今天的部落格沒什麼用,隻是一些準備工作,也是複習一下這些知識點,下面我們将建立一個MVC4的程式,如何建立一個MVC4的程式,相信大家都已經會了,然後搭建架構,搭建的架構如圖所示:
(2) 然後我們再LYZJ.UserLimitMVC.Model層設計資料庫,在裡面建立一個空的Edmx模型,如圖所示:
(3) 上面我們建立了四個類庫和一個MVC4.0的項目,大家仔細看一下,如果大家對這四個類庫的作用不太明确的話,我建議大家可以去看看三層的架構,或者在下面給我留言,現在就不往出寫了。
(4) 這篇部落格到這裡就結束了,下篇部落格我們開始講述:使用面對接口程式設計變成對資料庫通路層進行介紹。
作者:韓迎龍
出處:http://www.cnblogs.com/hanyinglong
MVC/.NET群:159227188
本頁版權歸作者和部落格園所有,歡迎轉載,但未經作者同意必須保留此段聲明, 且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利
分類: asp.net mvc
标簽: MVC, 權限, Edmx模型