/// <summary> /// 获取对象数据 /// </summary> /// <param name="domainModel">领域模型</param> /// <param name="domainObject">领域对象</param> /// <param name="dataID">数据唯一标识</param> /// <param name="shardingValue">分库分表键值对</param> /// <returns>对象数据</returns> public List <T> GetObjects <T>(string domainModelID, string domainObjectID, QueryFilter queryFilter, Func <QueryResultSet, DomainModel.Spi.DomainModel, DomainModel.Spi.DomainObject, List <T> > ormappingFunc = null) where T : class { if (string.IsNullOrWhiteSpace(domainModelID)) { throw new ArgumentNullException("DataAccessService.GetObjects.domainModelID"); } if (queryFilter == null) { throw new ArgumentNullException("DataAccessService.GetObjects.queryFilter"); } try { var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID); if (domainModel == null) { throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID); } var domainObject = domainModel.DomainObjects.FirstOrDefault(i => i.ID == domainObjectID); var resultSet = DataAccessEngine.GetInstance().GetDataQueryService().GetData(domainModel, domainObject, queryFilter); if (ormappingFunc != null) { return(ormappingFunc(resultSet, domainModel, domainObject)); } return(ORMappingService.MapToObjects <T>(resultSet, domainModel, domainObject)); } catch (Exception e) { throw new Exception("Dae-Query-001: 数据查询失败!", e); } }
/// <summary> /// 获取对象数据 /// </summary> /// <param name="domainModel">领域模型</param> /// <param name="dataID">数据唯一标识</param> /// <param name="shardingValue">分库分表键值对</param> /// <returns>对象数据</returns> public T GetObject <T>(string domainModelID, string dataId, ShardingValue shardingValue = null, Func <QueryResultSet, DomainModel.Spi.DomainModel, DomainModel.Spi.DomainObject, T> ormappingFunc = null) where T : class { if (string.IsNullOrWhiteSpace(domainModelID)) { throw new ArgumentNullException("DataAccessService.GetObject.domainModelID"); } if (string.IsNullOrWhiteSpace(dataId)) { throw new ArgumentNullException("DataAccessService.GetObject.dataId"); } try { var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID); if (domainModel == null) { throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID); } var resultSet = DataAccessEngine.GetInstance().GetDataQueryService().GetData(domainModel, dataId, shardingValue); if (ormappingFunc != null) { return(ormappingFunc(resultSet, domainModel, domainModel.RootDomainObject)); } return(ORMappingService.MapToObject <T>(resultSet, domainModel)); } catch (Exception e) { throw new Exception("Dae-Query-001: 数据查询失败!", e); } }