日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(一)

發(fā)布時(shí)間:2024/4/15 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
如果你已經(jīng)準(zhǔn)備好了開始MVC4的遠(yuǎn)航,那我們就閑話少說,背起行裝,踏上征途吧! 完成SportsStore電子商務(wù)平臺(tái),你將學(xué)會(huì): 1.使用MVC4開發(fā)你的應(yīng)用項(xiàng)目. 2.使用Ninject完成IOC注入. 3.使用Entity Framework 操作Sql server 數(shù)據(jù)庫. 4.使用Moq測(cè)試你的項(xiàng)目。 好了,現(xiàn)在請(qǐng)啟動(dòng)你的VS2012吧! 我們首先要?jiǎng)?chuàng)建的是一個(gè)空的Visual Studio solution。在這個(gè)solution中,我們將創(chuàng)建3個(gè)工程。 1. 一個(gè)域模塊工程。 2.一個(gè)MVC4應(yīng)用。 3.一個(gè)單元測(cè)試工程。 現(xiàn)在我們就創(chuàng)建一個(gè)名為SportsStore的空solution,它看起來像下面的截圖:

工程名

VS工程模板

目的

SportsStore.Domain

Class Library

域Entities和logic;

使用Entity Framework?創(chuàng)建一個(gè)repository,并將其設(shè)置為一個(gè)持久層。

SportsStore.WebUI

ASP.NET MVC 4 Web Application

controllers and views

SportsStore.UnitTests

Unit Test Project

unit tests

你可以刪除SportsStore.Domain工程中的class1.cs,我們不會(huì)使用它。 在SportsStore.Domain建兩個(gè)文件夾Abstract,Entities. 在SportsStore.WebUI中建一個(gè)文件夾Infrastructure. 如下圖: 到這一步我們的項(xiàng)目框架的雛形已經(jīng)出來了,現(xiàn)在我們要為它添加引用。在solusion管理器中,一次右擊 每個(gè)工程,選擇Add Reference。

工程名

工具依賴

工程依賴

微軟引用

SportsStore.Domain

Entity Framework

None

System.Web.Mvc

System.ComponentModel

.DataAnnotations

SportsStore.WebUI

Ninject

Moq

SportsStore.Domain

?

None

SportsStore.UnitTests

Ninject

Moq

SportsStore.Domain

SportsStore.WebUI

System.Web.Mvc

System.Web

Microsoft.CSharp

注意:System.Web.Mvc的版本一定選擇4.0.0 設(shè)置DI Container 在我們這個(gè)應(yīng)用中,對(duì)MVC框架做了很多擴(kuò)展,這也是我們學(xué)習(xí)的重點(diǎn)內(nèi)容,掌握了這些知識(shí)點(diǎn), 我們?cè)僖院蟮拈_發(fā)項(xiàng)目中,就能得心應(yīng)手,構(gòu)建出穩(wěn)定的,易于擴(kuò)展和維護(hù)的企業(yè)應(yīng)用架構(gòu)。 右擊SportsStore.WebUI工程的Infrastructure文件夾,選擇添加類,類名為NinjectControllerFactory, 代碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; using SportsStore.Domain.Abstract; using SportsStore.Domain.Entities; using Moq; using Ninject; using SportsStore.Domain.Concrete;namespace SportsStore.WebUI.Infrastructure {public class NinjectControllerFactory: DefaultControllerFactory{private IKernel ninjectKernel;public NinjectControllerFactory() {ninjectKernel = new StandardKernel();AddBindings();}protected override IController GetControllerInstance(RequestContextrequestContext, Type controllerType) {return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);}private void AddBindings() {//put bindings here }}}

我們現(xiàn)在還沒有添加任何綁定,但是,當(dāng)我們需要時(shí),能使用 AddBindings 方法去添加. 現(xiàn)在,我們需要去

告訴 MVC 我們打算使用 NinjectController class 去創(chuàng)建Controller對(duì)象,要實(shí)現(xiàn)這一點(diǎn),請(qǐng)打開SportsStore.WebUI工程的Global.asax.cs?文件,添加代碼: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; using SportsStore.WebUI.Infrastructure;namespace SportsStore.WebUI {// 注意: 有關(guān)啟用 IIS6 或 IIS7 經(jīng)典模式的說明,// 請(qǐng)?jiān)L問 http://go.microsoft.com/?LinkId=9394801public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);//Added by wangzhiyue //We need to tell MVC that we want to use the NinjectController //class to create controller objectsControllerBuilder.Current.SetControllerFactory(newNinjectControllerFactory());//Added end AuthConfig.RegisterAuth();}} }

啟動(dòng)域模塊

現(xiàn)在我們將要啟動(dòng)域模塊,在MVC應(yīng)用中應(yīng)用領(lǐng)域模型,能使每一件事情都變得完美,因此,域 也就必然 是啟動(dòng)應(yīng)用的最完美的地方。因?yàn)槲覀円龅碾娮由虅?wù)應(yīng)用,所以,我們需要一個(gè)產(chǎn)品,這是在明顯不過的事了。右擊我們剛剛建立的Entities文件夾,然后新建一個(gè)C#類,命名為Product ,代碼如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace SportsStore.Domain.Entities {public class Product{public int ProductID { get; set; }public string Name { get; set; }public string Description { get; set; }public decimal Price { get; set; }public string Category { get; set; }} } 注意這個(gè)public關(guān)鍵字,因?yàn)槲覀儗⒂蚰P头蛛x為獨(dú)立的工程,所以將訪問關(guān)鍵字定義為public,你可以不 這么做,但這樣做有助于模塊的分離,使項(xiàng)目層次鮮明、簡潔。 如果你覺得從我的文章中學(xué)到了知識(shí),那么請(qǐng)繼續(xù)關(guān)注我續(xù)篇!

轉(zhuǎn)載于:https://www.cnblogs.com/bzwang/archive/2013/05/31/MVC4_Ninject_EF_Moq.html

總結(jié)

以上是生活随笔為你收集整理的使用MVC4,Ninject,EF,Moq,构建一个真实的应用电子商务SportsStore(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。