ASP.Net MVC OA项目笔记<五>
程序员文章站
2022-07-09 13:02:27
1.1.1 抽象工厂封装数据操作类实例创建,然后DBSession调用抽象工厂,修改DBSession CZBK.ItcastOA.DALFactory数据会话层调数据层不能直接new,要封装一下解耦 1.2.1 CZBK.ItcastOA.DALFactory 新增抽象工厂类 AbstractFa ......
1.1.1 抽象工厂封装数据操作类实例创建,然后dbsession调用抽象工厂,修改dbsession
czbk.itcastoa.dalfactory数据会话层调数据层不能直接new,要封装一下解耦
1.2.1 czbk.itcastoa.dalfactory 新增抽象工厂类 abstractfactory
1.2.2 web.config中配置一下配置信息(数据层的程序集和命名空间)
<!--配置程序集名称和命名空间名称-->
<add key="assemblypath" value="czbk.itcastoa.dal" />
<add key="namespace" value="czbk.itcastoa.dal" />
1.2.3 引入 system.configuration,因为要读取配置信息
1.2.4 抽象工厂类 abstractfactory代码
/// <summary> /// 通过反射的形式创建类的实例 /// </summary> public class abstractfactory { //读取配置的程序集和命名空间 private static readonly string assemblypath = configurationmanager.appsettings["assemblypath"]; private static readonly string namespace = configurationmanager.appsettings["namespace"]; public static iuserinfodal createuserinfodal() { string fullclassname = namespace + ".userinfodal"; return createinstance(fullclassname) as iuserinfodal;//把反射封装在这个方法里 } private static object createinstance(string classname) { //加载程序集 var assembly = assembly.load(assemblypath); return assembly.createinstance(classname); } }
1.2.5 通过抽象工厂封装了类的实例的创建
1.2.6 这样就完全解耦了,以后不管换成什么dal,只要更改配置文件就行
1.3.1 各个会话层都是通过接口来调用,所以数据会话层也需要一个接口
面向接口编程,通过这种方式来解耦
idal添加一个接口idbsession
首先idal也要引用一下ef,通过添加实体数据模型引用
/// <summary> /// 业务层调用的是数据会话层的接口 /// </summary> public interface idbsession { dbcontext db { get; } iuserinfodal userinfodal { get; set; } bool savechanges(); }
1.3.2 让dbsession继承idbsession
/// <summary> /// 1.数据会话层:就是一个工厂类,负责完成所有数据操作类实例的创建,然后业务层通过数据会话层来获取要操作数据类的实例, /// 所以数据会话层将业务层和数据层解耦。 /// 2.在数据会话层中提供一个方法:完成所有数据的保存。 /// </summary> public class dbsession:idbsession { //oaentities db = new oaentities(); public dbcontext db { get { return dbcontextfactory.createdbcontext(); } } private iuserinfodal _userinfodal; public iuserinfodal userinfodal { get { if(_userinfodal==null) { //_userinfodal= new userinfodal(); //通过抽象工厂封装了类的实例的创建 _userinfodal = abstractfactory.createuserinfodal(); } return _userinfodal; } set { _userinfodal = value; } } /// <summary> /// 一个业务中经常涉及到对多张表的操作,我们希望连接一次数据库,完成对这张表数据的操作,提高性能 /// 工作单元模式 /// </summary> /// <returns></returns> public bool savechanges() { return db.savechanges() > 0; } }
下一篇: 代理模板与主站模板的常见问题
推荐阅读
-
vue学习笔记五:在vue项目里面使用引入公共方法详解
-
ASP.NET MVC 项目直接预览PDF文件
-
Asp.Net Core MVC项目实现多语言实例(Globalization/Localization)
-
ASP.NET MVC5网站开发之展示层架构(五)
-
ASP.NET学习笔记(五)-全球化部署,网站发布方法,AJAX使用,水晶报表使用,DropDownList,CheckBox全选
-
asp.net core项目mvc权限控制:分配权限
-
MVC项目结构搭建及单个类的实现学习笔记1
-
ASP.NET MVC项目实现BasePage基类用作ASPX.CS网页继承
-
ASP.NET MVC项目中App_Code目录在程序应用
-
asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value 'DALMsSql.DBSessionFactory,DALMsSql'.