BL与BE懒加载时出现循环依赖问题求助
求助:实体层懒加载碰到循环依赖死胡同了
我目前的系统架构分为业务层(BL)、业务实体层(BE)和数据访问层(SQL),其中业务实体层是被业务层和数据访问层共同引用的。最近想给实体做懒加载,本来打算调用业务层的方法来填充实体里的关联数据,但遇到了循环依赖的问题:业务层依赖业务实体层,导致实体层根本没法调用业务层的方法,陷入死循环了。
相关代码情况
实体的属性定义
// 非懒加载属性 public int Id { get; set; } public string Description { get; set; } // 懒加载属性 private Lazy<AuditTypeEntity> _auditType = null; public AuditTypeEntity auditType { get { return _auditType.Value; } }
写了但没法用的构造函数
我原本想在实体构造里初始化懒加载委托,但因为循环依赖的问题根本用不了——毕竟BL依赖BE,BE不能反过来调用BL的方法:
public MyEntity() { _auditType = new Lazy<AuditTypeEntity>(() => BusinessLayer.GetAuditTypeById(_auditTypeId).Value); }
补充说明:我们用ADO.NET填充实体
这里贴一段调用数据访问层的示例代码,方便大家理解我们的实体填充方式:
public static IList<Nature> GetAllNature() { using (DAOManager daomanager = DAOFactory.CreateDaoManager(DataSource.DB_Belval)) { return daomanager.GetNatureDAO().GetAll(BE.EnumEntity.NATURE.ANOMALY); } }
内容的提问来源于stack exchange,提问作者clement
相关产品推荐
相关产品推荐

