1、測試倉儲層、業務層是否能實現對數據庫表的操做web
一、建立IsysUserInfoRepository接口來繼承IBaseRepository父接口數據庫
1 namespace Wchl.WMBlog.IRepository 2 { 3 public partial interface IsysUserInfoRepository : IBaseRepository<sysUserInfo> 4 { 5 6 } 7 }
二、建立sysUserInfoRepository類繼承BaseRepository父類,以及 IsysUserInfoRepository接口緩存
sysUserInfoRepository類:框架
1 namespace Wchl.WMBlog.Repository 2 { 3 public partial class sysUserInfoRepository : BaseRepository<sysUserInfo>, IsysUserInfoRepository 4 { 5 6 } 7 }
三、建立服務接口IsysUserInfoServices繼承IBaseServices接口ide
1 namespace Wchl.WMBlog.IServices 2 { 3 public partial interface IsysUserInfoServices: IBaseServices<sysUserInfo> 4 { 5 } 6 }
四、建立服務類sysUserInfoServices繼承BaseServices,以及IsysUserInfoServices接口函數
1 namespace Wchl.WMBlog.Services 2 { 3 public partial class sysUserInfoServices: BaseServices<sysUserInfo>, IsysUserInfoServices 4 { 5 6 } 7 } 8
五、服務層的父類BaseServices中baseDal須要new一個倉儲父類泛型工具
public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>();測試
六、在UI層中MVC,HOME控制器index下建立一個添加的實例ui
1 IsysUserInfoServices userinfoservice = new sysUserInfoServices(); 2 3 public ActionResult Index() 4 { 5 try 6 { 7 //var usreinfo = userinfoservice.QueryWhere(c => c.uID > 2).FirstOrDefault(); 8 for (int i = 0; i < 10; i++) 9 { 10 userinfoservice.Add(new sysUserInfo() 11 { 12 uLoginName = "admin" + i, 13 uLoginPWD = "123456", 14 uRealName = "超級管理員" + i, 15 uCreateTime = DateTime.Now, 16 uUpdateTime = DateTime.Now, 17 uRemark = "測試添加功能" 18 }); 19 } 20 21 userinfoservice.SaverChanges(); 22 return Content("添加數據成功"); 23 } 24 catch (Exception ex) 25 { 26 27 return Content("錯誤提示:" + ex.Message); ; 28 } 29 30 }
七、在WebUI的Web.config中添加數據庫連接字符串spa
八、而後啓動系統頁面提示
表示數據可以正常錄入數據庫中,查看數據庫
數據庫中數據已經能夠正常插入,另外對錶中的字段約束也成功了。
2、使用Autofac依賴注入分離接口與實例之間的關係,達到解耦的目的
一、使用NuGet管理工具下載Autofac,安裝在webUI
二、因爲須要在系統啓動以前來把全部的類建立好相應的對象
須要在Global文件下添加一個配置文件來實現MVC項目的IOC和DI
三、而後在App_Start文件中建立AutofacConfig文件
AutofacConfig文件
1 namespace Wchl.WMBlog.WebUI 2 { 3 public class AutofacConfig 4 { 5 /// <summary> 6 /// 負責調用autofac框架實現業務邏輯層和數據倉儲層程序集中的類型對象的建立 7 /// 負責建立MVC控制器類的對象(調用控制器中的有參構造函數),接管DefaultControllerFactory的工做 8 /// </summary> 9 public static void Register() 10 { 11 //實例化一個autofac的建立容器 12 var builder = new ContainerBuilder(); 13 //告訴Autofac框架,未來要建立的控制器類存放在哪一個程序集 (Wchl.CRM.WebUI) 14 Assembly controllerAss = Assembly.Load("Wchl.WMBlog.WebUI"); 15 builder.RegisterControllers(controllerAss); 16 17 //告訴autofac框架註冊數據倉儲層所在程序集中的全部類的對象實例 18 Assembly respAss = Assembly.Load("Wchl.WMBlog.Repository"); 19 //建立respAss中的全部類的instance以此類的實現接口存儲 20 builder.RegisterTypes(respAss.GetTypes()).AsImplementedInterfaces(); 21 22 //告訴autofac框架註冊業務邏輯層所在程序集中的全部類的對象實例 23 Assembly serpAss = Assembly.Load("Wchl.WMBlog.Services"); 24 //建立serAss中的全部類的instance以此類的實現接口存儲 25 builder.RegisterTypes(serpAss.GetTypes()).AsImplementedInterfaces(); 26 27 // builder.RegisterType<>().As<>(); 28 29 //建立一個Autofac的容器 30 var container = builder.Build(); 31 //將MVC的控制器對象實例 交由autofac來建立 32 DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 33 } 34 } 35 }
四、修改Repository程序集和Services程序集的生成路基到WebUI層的Bin目錄下,也能夠直接引用的方式。
五、修改HomeController控制器下userinfoservice的生成方式,改成建立構造函數的時候來生成。
六、修改服務層sysUserInfoServices構造函數,使其建立的時候生成相應的對象
把dal複製給dal是爲了能拿到sysUserInfoServices中本身特殊的方法。base.baseDal = dal;爲拿到父類的公用方法。
BaseServices類中也修改成不須要new一個實例類
七、把homeController下改爲查詢數據,返回到頁面。
顯示名字表示Autofac依賴注入成功了
下一篇就是要添加Nlog日誌框架以及Cache緩存機制使用使用微軟的MemoryCache以及Redis,但願你們多多吐槽,批評指點,謝謝了。