private DbContext() { connectionStack = new Stack<DbConnection>(); RecordRepository = new DbRecordRepository(); EntityRepository = new DbEntityRepository(); RelationRepository = new DbRelationRepository(); SettingsRepository = new DbSystemSettingsRepository(); }
private DbContext() { connectionStack = new Stack <DbConnection>(); RecordRepository = new DbRecordRepository(); EntityRepository = new DbEntityRepository(); RelationRepository = new DbRelationRepository(); SettingsRepository = new DbSystemSettingsRepository(); }
public EntityRelationListResponse Read() { EntityRelationListResponse response = new EntityRelationListResponse(); response.Timestamp = DateTime.UtcNow; response.Object = null; try { var relations = Cache.GetRelations(); if (relations != null) { response.Object = relations; response.Hash = Cache.GetRelationsHash(); response.Success = true; response.Message = null; return response; } relations = DbContext.Current.RelationRepository.Read().Select(x => x.MapTo<EntityRelation>()).ToList(); List<DbEntity> dbEntities = new DbEntityRepository().Read(); foreach( EntityRelation relation in relations ) { var originEntity = dbEntities.Single(x => x.Id == relation.OriginEntityId); var targetEntity = dbEntities.Single(x => x.Id == relation.TargetEntityId); relation.OriginEntityName = originEntity.Name; relation.TargetEntityName = targetEntity.Name; relation.OriginFieldName = originEntity.Fields.Single(x => x.Id == relation.OriginFieldId).Name; relation.TargetFieldName = targetEntity.Fields.Single(x => x.Id == relation.TargetFieldId).Name; } if( relations != null ) Cache.AddRelations(relations); //we use instance from cache as return value, because in cache we deepcopy collection response.Object = Cache.GetRelations(); response.Hash = Cache.GetRelationsHash(); response.Success = true; response.Message = null; return response; } catch (Exception e) { response.Success = false; response.Object = null; response.Hash = null; response.Timestamp = DateTime.UtcNow; #if DEBUG response.Message = e.Message + e.StackTrace; #endif return response; } }