monisa-za官方,伊贝诗会员首页,迪丽娜尔的女儿
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; } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论