Example #1
0
        /// <summary>
        /// 保存领域模型数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="instance">对象实例</param>
        public void SaveBatch(string domainModelID, List <object> instances, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Save.domainModelID");
            }
            if (instances == null)
            {
                throw new ArgumentNullException("DataAccessService.Save.instances");
            }
            try
            {
                var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID);
                if (domainModel == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID);
                }

                var shardings = new List <ShardingValue>();
                if (shardingValue != null)
                {
                    instances.ForEach(i => shardings.Add(shardingValue));
                }

                DataAccessEngine.GetInstance().GetDataSaveService().SaveBatch(domainModel, instances, shardings);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Save-001: 数据保存失败!", e);
            }
        }
Example #2
0
        /// <summary>
        /// 获取对象数据
        /// </summary>
        /// <param name="domainModel">领域模型</param>
        /// <param name="dataId">数据唯一标识</param>
        /// <param name="shardingValue">分库分表键值对</param>
        /// <returns>对象数据</returns>
        public List <DataTable> GetData(string domainModelID, string dataId, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.GetData.domainModelID");
            }
            if (string.IsNullOrWhiteSpace(dataId))
            {
                throw new ArgumentNullException("DataAccessService.GetData.dataId");
            }

            try
            {
                var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID);
                if (domainModel == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID);
                }

                return(DataAccessEngine.GetInstance().GetDataQueryService().GetData(domainModel, dataId, shardingValue).DataTables);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Query-001: 数据查询失败!", e);
            }
        }
Example #3
0
        /// <summary>
        /// 保存领域模型数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="instance">对象实例</param>
        public void Save(string domainModelID, object instance, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Save.domainModelID");
            }
            if (instance == null)
            {
                throw new ArgumentNullException("DataAccessService.Save.instance");
            }
            try
            {
                var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID);
                if (domainModel == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID);
                }


                DataAccessEngine.GetInstance().GetDataSaveService().Save(domainModel, instance, shardingValue);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Save-001: 数据保存失败!", e);
            }
        }
Example #4
0
        /// <summary>
        ///  删除数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="dataIds">数据唯一标识集合</param>
        /// <param name="shardingKeyValue">分库分表键值对</param>
        public void Delete(string domainModelID, IList <string> dataIds, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Delete.domainModelID");
            }
            if (dataIds == null || dataIds.Count == 0)
            {
                throw new ArgumentNullException("DataAccessService.Delete.dataIds");
            }

            try
            {
                var domainModel = DomainModelManageService.GetInstance().GetDomainModel(domainModelID);

                if (domainModel == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainModel: " + domainModelID);
                }


                DataAccessEngine.GetInstance().GetDataDeleteService().DeleteByIDs(domainModel, dataIds, shardingValue);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Delete-002: 数据批量删除失败!", e);
            }
        }
Example #5
0
        /// <summary>
        /// 通过关联构造结果集映射
        /// </summary>
        /// <param name="asso">关联</param>
        /// <returns>结果集映射</returns>
        private ResultMapping CreateAssociationMapping(Association asso)
        {
            var model = DomainModelManageService.GetInstance().GetDomainModel(asso.AssoDomainModelID);

            DomainModelValidate(model);

            return(this.CreateResultMapping(model));
        }
Example #6
0
        /// <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);
            }
        }
Example #7
0
        /// <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);
            }
        }
Example #8
0
        /// <summary>
        /// 获取对象数据
        /// </summary>
        /// <param name="domainModel">领域模型</param>
        /// <param name="domainObject">领域对象</param>
        /// <param name="queryFilter">查询条件</param>
        /// <returns>对象数据</returns>
        public List <DataTable> GetData(string domainModelID, string domainObjectID, QueryFilter queryFilter)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.GetData.domainModelID");
            }
            if (string.IsNullOrWhiteSpace(domainObjectID))
            {
                throw new ArgumentNullException("DataAccessService.GetData.domainObjectID");
            }
            if (queryFilter == null)
            {
                throw new ArgumentNullException("DataAccessService.GetData.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);
                if (domainObject == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainObject: " + domainObjectID);
                }

                return(DataAccessEngine.GetInstance().GetDataQueryService().GetData(domainModel, domainObject, queryFilter).DataTables);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Query-001: 数据查询失败!", e);
            }
        }
Example #9
0
        /// <summary>
        ///  删除数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="domainObjectID">领域对象ID</param>
        /// <param name="dataId">数据唯一标识</param>
        /// <param name="shardingValue">分库分表键值对</param>
        public void Delete(string domainModelID, string domainObjectID, string dataId, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Delete.domainModelID");
            }
            if (string.IsNullOrWhiteSpace(domainObjectID))
            {
                throw new ArgumentNullException("DataAccessService.Delete.domainObjectID");
            }
            if (string.IsNullOrWhiteSpace(dataId))
            {
                throw new ArgumentNullException("DataAccessService.Delete.dataId");
            }

            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);
                if (domainObject == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainObject: " + domainObjectID);
                }

                DataAccessEngine.GetInstance().GetDataDeleteService().DeleteByID(domainModel, domainObject, dataId, shardingValue);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Delete-002: 数据批量删除失败!", e);
            }
        }
Example #10
0
        /// <summary>
        /// 更新指定对象的数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="domainObjectID">领域对象ID</param>
        /// <param name="instance">对象实例</param>
        public void Update(string domainModelID, string domainObjectID, object instance, ShardingValue shardingValue = null)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Update.domainModelID");
            }
            if (string.IsNullOrWhiteSpace(domainObjectID))
            {
                throw new ArgumentNullException("DataAccessService.Update.domainObjectID");
            }
            if (instance == null)
            {
                throw new ArgumentNullException("DataAccessService.Update.instance");
            }

            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);
                if (domainObject == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainObject: " + domainObjectID);
                }

                DataAccessEngine.GetInstance().GetDataUpdateService().Update(domainModel, domainObject, instance, shardingValue);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Update-001: 数据保存失败!", e);
            }
        }
Example #11
0
        /// <summary>
        /// 保存指定对象的数据
        /// </summary>
        /// <param name="domainModelID">领域模型ID</param>
        /// <param name="domainObjectID">领域对象ID</param>
        /// <param name="instances">对象实例</param>
        public void Save(string domainModelID, string domainObjectID, List <object> instances, List <ShardingValue> shardingValues)
        {
            if (string.IsNullOrWhiteSpace(domainModelID))
            {
                throw new ArgumentNullException("DataAccessService.Save.domainModelID");
            }
            if (string.IsNullOrWhiteSpace(domainObjectID))
            {
                throw new ArgumentNullException("DataAccessService.Save.domainObjectID");
            }
            if (instances == null)
            {
                throw new ArgumentNullException("DataAccessService.Save.instances");
            }

            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);
                if (domainObject == null)
                {
                    throw new Exception("Dae-0001: Cannot find DomainObject: " + domainObjectID);
                }

                DataAccessEngine.GetInstance().GetDataSaveService().SaveBatch(domainModel, domainObject, instances, shardingValues);
            }
            catch (Exception e)
            {
                throw new Exception("Dae-Save-001: 数据保存失败!", e);
            }
        }