public EntityFrameworkCoreRepository(
            ITargetedFields targetedFields,
            IDbContextResolver contextResolver,
            IResourceGraph resourceGraph,
            IGenericServiceFactory genericServiceFactory,
            IResourceFactory resourceFactory,
            IEnumerable <IQueryConstraintProvider> constraintProviders,
            ILoggerFactory loggerFactory)
        {
            if (contextResolver == null)
            {
                throw new ArgumentNullException(nameof(contextResolver));
            }
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _targetedFields        = targetedFields ?? throw new ArgumentNullException(nameof(targetedFields));
            _resourceGraph         = resourceGraph ?? throw new ArgumentNullException(nameof(resourceGraph));
            _genericServiceFactory = genericServiceFactory ?? throw new ArgumentNullException(nameof(genericServiceFactory));
            _resourceFactory       = resourceFactory ?? throw new ArgumentNullException(nameof(resourceFactory));
            _constraintProviders   = constraintProviders ?? throw new ArgumentNullException(nameof(constraintProviders));
            _dbContext             = contextResolver.GetContext();
            _traceWriter           = new TraceLogWriter <EntityFrameworkCoreRepository <TResource, TId> >(loggerFactory);
        }
コード例 #2
0
        /// <inheritdoc />
        public void Resolve()
        {
            if (EntityFrameworkCoreIsEnabled())
            {
                DbContext context = _resolver.GetContext();

                foreach (ContextEntity ce in _graph.Entities)
                {
                    IEntityType meta = context.Model.FindEntityType(ce.EntityType);
                    if (meta == null)
                    {
                        continue;
                    }
                    foreach (var attr in ce.Relationships)
                    {
                        if (attr is HasManyThroughAttribute)
                        {
                            continue;
                        }
                        INavigation inverseNavigation = meta.FindNavigation(attr.InternalRelationshipName)?.FindInverse();
                        attr.InverseNavigation = inverseNavigation?.Name;
                    }
                }
            }
        }
コード例 #3
0
        /// <inheritdoc />
        public void Resolve()
        {
            if (EntityFrameworkCoreIsEnabled())
            {
                DbContext context = _resolver.GetContext();

                foreach (ResourceContext ce in _provider.GetResourceContexts())
                {
                    IEntityType meta = context.Model.FindEntityType(ce.ResourceType);
                    if (meta == null)
                    {
                        continue;
                    }
                    foreach (var attr in ce.Relationships)
                    {
                        if (attr is HasManyThroughAttribute)
                        {
                            continue;
                        }
                        INavigation inverseNavigation = meta.FindNavigation(attr.PropertyInfo.Name)?.FindInverse();
                        attr.InverseNavigation = inverseNavigation?.Name;
                    }
                }
            }
        }
コード例 #4
0
 public OperationsProcessor(
     IOperationProcessorResolver processorResolver,
     IDbContextResolver dbContextResolver)
 {
     _processorResolver = processorResolver;
     _dbContext         = dbContextResolver.GetContext();
 }
コード例 #5
0
 public ControllerRepository(
     ILoggerFactory loggerFactory,
     IJsonApiContext jsonApiContext,
     IDbContextResolver contextResolver
     ) : base(loggerFactory, jsonApiContext, contextResolver)
 {
     this.dbContext = contextResolver.GetContext();
     this.dbSet     = contextResolver.GetDbSet <TEntity>();
 }
コード例 #6
0
 public OperationsProcessor(
     IOperationProcessorResolver processorResolver,
     IDbContextResolver dbContextResolver,
     IJsonApiContext jsonApiContext)
 {
     _processorResolver = processorResolver;
     _dbContext         = dbContextResolver.GetContext();
     _jsonApiContext    = jsonApiContext;
 }
コード例 #7
0
        public RepositoryRelationshipUpdateHelper(IDbContextResolver contextResolver, IResourceFactory resourceFactory)
        {
            if (contextResolver == null)
            {
                throw new ArgumentNullException(nameof(contextResolver));
            }

            _resourceFactory = resourceFactory ?? throw new ArgumentNullException(nameof(resourceFactory));
            _context         = contextResolver.GetContext();
        }
コード例 #8
0
 // NOTE: this repository MUST not rely on any other repositories or services
 public CurrentUserRepository(
     ILoggerFactory loggerFactory,
     IJsonApiContext jsonApiContext,
     IDbContextResolver contextResolver,
     ICurrentUserContext currentUserContext
     ) : base(loggerFactory, jsonApiContext, contextResolver)
 {
     this.DBContext          = (AppDbContext)contextResolver.GetContext();
     this.CurrentUserContext = currentUserContext;
 }
コード例 #9
0
 public override async Task <IActionResult> PatchAsync(Guid id, [FromBody] TodoItemCollection entity)
 {
     if (entity.Name == "PRE-ATTACH-TEST")
     {
         var targetTodoId    = entity.TodoItems.First().Id;
         var todoItemContext = _dbResolver.GetContext().Set <TodoItem>();
         await todoItemContext.Where(ti => ti.Id == targetTodoId).FirstOrDefaultAsync();
     }
     return(await base.PatchAsync(id, entity));
 }
コード例 #10
0
        /// <inheritdoc />
        public async Task <IOperationsTransaction> BeginTransactionAsync(CancellationToken cancellationToken)
        {
            DbContext dbContext = _dbContextResolver.GetContext();

            IDbContextTransaction transaction = _options.TransactionIsolationLevel != null
                ? await dbContext.Database.BeginTransactionAsync(_options.TransactionIsolationLevel.Value, cancellationToken)
                : await dbContext.Database.BeginTransactionAsync(cancellationToken);

            return(new EntityFrameworkCoreTransaction(transaction, dbContext));
        }
コード例 #11
0
 public BaseRepository(ILoggerFactory loggerFactory,
                       IJsonApiContext jsonApiContext,
                       CurrentUserRepository currentUserRepository,
                       IDbContextResolver contextResolver)
     : base(loggerFactory, jsonApiContext, contextResolver)
 {
     this.dbContext             = contextResolver.GetContext();
     this.dbSet                 = contextResolver.GetDbSet <TEntity>();
     this.currentUserRepository = currentUserRepository;
 }
コード例 #12
0
 public BelongsToUserRepository(
     ILoggerFactory loggerFactory,
     IJsonApiContext jsonApiContext,
     IDbContextResolver contextResolver,
     CurrentUserService currentUser
     ) : base(loggerFactory, jsonApiContext, contextResolver)
 {
     _currentUser = currentUser;
     _db          = (AppDbContext)contextResolver.GetContext();
 }
コード例 #13
0
 public WorkflowValidationService(
     IServiceProvider serviceProvider,
     IDbContextResolver contextResolver,
     IJobRepository <ProductWorkflowScheme, Guid> productWorkflowSchemeRepository
     )
 {
     ServiceProvider = serviceProvider;
     ProductWorkflowSchemeRepository = productWorkflowSchemeRepository;
     this.dbContext = contextResolver.GetContext();
     this.dbSet     = contextResolver.GetDbSet <WorkflowScheme>();
 }
コード例 #14
0
        public override async Task <IActionResult> PatchAsync(Guid id, [FromBody] TodoItemCollection resource, CancellationToken cancellationToken)
        {
            if (resource.Name == "PRE-ATTACH-TEST")
            {
                var targetTodoId    = resource.TodoItems.First().Id;
                var todoItemContext = _dbResolver.GetContext().Set <TodoItem>();
                await todoItemContext.Where(ti => ti.Id == targetTodoId).FirstOrDefaultAsync(cancellationToken);
            }

            return(await base.PatchAsync(id, resource, cancellationToken));
        }
 public DefaultResourceRepository(
     ITargetedFields targetedFields,
     IDbContextResolver contextResolver,
     IResourceGraph resourceGraph,
     IGenericServiceFactory genericServiceFactory,
     ILoggerFactory loggerFactory = null)
 {
     _targetedFields        = targetedFields;
     _resourceGraph         = resourceGraph;
     _genericServiceFactory = genericServiceFactory;
     _context = contextResolver.GetContext();
     _dbSet   = _context.Set <TResource>();
 }
コード例 #16
0
 public NotificationService(
     IDbContextResolver contextResolver,
     IJsonApiContext jsonApiContext,
     IEntityRepository <Notification> entityRepository,
     ICurrentUserContext currentUserContext,
     UserRepository userRepository,
     ILoggerFactory loggerFactory = null)
     : base(jsonApiContext, entityRepository, loggerFactory)
 {
     this.notificationsRepository = entityRepository;
     this.currentUserContext      = currentUserContext;
     this.userRepository          = userRepository;
     this.dbContext = contextResolver.GetContext();
     this.dbSet     = contextResolver.GetDbSet <Notification>();
 }
コード例 #17
0
        public DefaultResourceRepository(
            ITargetedFields targetedFields,
            IDbContextResolver contextResolver,
            IResourceGraph resourceGraph,
            IGenericServiceFactory genericServiceFactory,
            ILoggerFactory loggerFactory)
        {
            _targetedFields        = targetedFields;
            _resourceGraph         = resourceGraph;
            _genericServiceFactory = genericServiceFactory;
            _context = contextResolver.GetContext();
            _dbSet   = _context.Set <TResource>();
            _logger  = loggerFactory.CreateLogger <DefaultResourceRepository <TResource, TId> >();

            _logger.LogTrace("Executing constructor.");
        }
コード例 #18
0
 public EntityFrameworkCoreRepository(
     ITargetedFields targetedFields,
     IDbContextResolver contextResolver,
     IResourceGraph resourceGraph,
     IGenericServiceFactory genericServiceFactory,
     IResourceFactory resourceFactory,
     IEnumerable <IQueryConstraintProvider> constraintProviders,
     ILoggerFactory loggerFactory)
 {
     _targetedFields        = targetedFields;
     _resourceGraph         = resourceGraph;
     _genericServiceFactory = genericServiceFactory;
     _resourceFactory       = resourceFactory;
     _constraintProviders   = constraintProviders;
     _dbContext             = contextResolver.GetContext();
     _logger = loggerFactory.CreateLogger <EntityFrameworkCoreRepository <TResource, TId> >();
 }
コード例 #19
0
        public EntityFrameworkCoreRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
                                             IResourceFactory resourceFactory, IEnumerable <IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
        {
            ArgumentGuard.NotNull(contextResolver, nameof(contextResolver));
            ArgumentGuard.NotNull(loggerFactory, nameof(loggerFactory));
            ArgumentGuard.NotNull(targetedFields, nameof(targetedFields));
            ArgumentGuard.NotNull(resourceGraph, nameof(resourceGraph));
            ArgumentGuard.NotNull(resourceFactory, nameof(resourceFactory));
            ArgumentGuard.NotNull(constraintProviders, nameof(constraintProviders));

            _targetedFields      = targetedFields;
            _resourceGraph       = resourceGraph;
            _resourceFactory     = resourceFactory;
            _constraintProviders = constraintProviders;
            _dbContext           = contextResolver.GetContext();
            _traceWriter         = new TraceLogWriter <EntityFrameworkCoreRepository <TResource, TId> >(loggerFactory);
        }
コード例 #20
0
        public async Task <IActionResult> PostAsync([FromBody] JObject entity)
        {
            try
            {
                PatientNumbers patientNumbers = entity.ToObject <PatientNumbers>();
                int            patientID      = patientNumbers.PatientID;
                var            dbContext      = _dbContextResolver.GetDbSet <PhoneNumbers>();
                if (patientNumbers.PhoneNumbers != null && patientNumbers.PhoneNumbers.Count > 0)
                {
                    //int patientID = phoneNumbers.FirstOrDefault().PatientID_fk;

                    var phoneNumber = dbContext.Where(m => m.PatientID == patientID).ToList();

                    dbContext.RemoveRange(phoneNumber);
                    foreach (PhoneNumbers phone in patientNumbers.PhoneNumbers)
                    {
                        await base.PostAsync(phone);
                    }
                    Response.StatusCode = 200;//(Status Ok)
                    return(Json(new
                    {
                        data = new object(),
                        Message = "Success",
                        StatusCode = 200
                    }));
                }
                else
                {
                    var phoneNumber = dbContext.Where(m => m.PatientID == patientID).ToList();
                    dbContext.RemoveRange(phoneNumber);
                    await _dbContextResolver.GetContext().SaveChangesAsync();

                    Response.StatusCode = 200;//(Status Ok)
                    return(Json(new
                    {
                        data = new object(),
                        Message = "Success",
                        StatusCode = 200
                    }));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #21
0
        public async Task <IActionResult> PostAsync([FromBody] JObject entity)
        {
            try
            {
                PatientLabels patientLabels = entity.ToObject <PatientLabels>();
                int           patientID     = patientLabels.PatientID;
                var           dbContext     = _dbContextResolver.GetDbSet <PatientCustomLabels>();
                if (patientLabels.PatientCustomLabels != null && patientLabels.PatientCustomLabels.Count > 0)
                {
                    var patientLabel = dbContext.Where(m => m.PatientID == patientID).ToList();

                    dbContext.RemoveRange(patientLabel);
                    CommonMethods commonMethods = new CommonMethods();
                    foreach (PatientCustomLabels patientCustomLabel in patientLabels.PatientCustomLabels)
                    {
                        patientCustomLabel.CustomLabelDataType = commonMethods.ParseString(patientCustomLabel.CustomLabelValue).ToString(); await base.PostAsync(patientCustomLabel);
                    }
                    Response.StatusCode = 200;//(Status Ok)
                    return(Json(new
                    {
                        data = patientLabels,
                        Message = "Success",
                        StatusCode = 200
                    }));
                }
                else
                {
                    var patientLabel = dbContext.Where(m => m.PatientID == patientID).ToList();
                    dbContext.RemoveRange(patientLabel);
                    await _dbContextResolver.GetContext().SaveChangesAsync();

                    Response.StatusCode = 200;//(Status Ok)
                    return(Json(new
                    {
                        data = new object(),
                        Message = "Success",
                        StatusCode = 200
                    }));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #22
0
        public EntityFrameworkCoreRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
                                             IResourceFactory resourceFactory, IEnumerable <IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
        {
            ArgumentGuard.NotNull(contextResolver, nameof(contextResolver));
            ArgumentGuard.NotNull(loggerFactory, nameof(loggerFactory));
            ArgumentGuard.NotNull(targetedFields, nameof(targetedFields));
            ArgumentGuard.NotNull(resourceGraph, nameof(resourceGraph));
            ArgumentGuard.NotNull(resourceFactory, nameof(resourceFactory));
            ArgumentGuard.NotNull(constraintProviders, nameof(constraintProviders));

            _targetedFields      = targetedFields;
            _resourceGraph       = resourceGraph;
            _resourceFactory     = resourceFactory;
            _constraintProviders = constraintProviders;
            _dbContext           = contextResolver.GetContext();
            _traceWriter         = new TraceLogWriter <EntityFrameworkCoreRepository <TResource, TId> >(loggerFactory);

#pragma warning disable 612 // Method is obsolete
            _resourceDefinitionAccessor = resourceFactory.GetResourceDefinitionAccessor();
#pragma warning restore 612
        }
コード例 #23
0
 public GenericProcessor(IDbContextResolver contextResolver)
 {
     _context = contextResolver.GetContext();
 }
コード例 #24
0
 public RepositoryRelationshipUpdateHelper(IDbContextResolver contextResolver, IResourceFactory resourceFactory)
 {
     _resourceFactory = resourceFactory;
     _context         = contextResolver.GetContext();
 }
コード例 #25
0
 public JobRepository(IDbContextResolver contextResolver)
 {
     this.dbContext = contextResolver.GetContext();
     this.dbSet     = contextResolver.GetDbSet <TEntity>();
 }
コード例 #26
0
 public RepositoryRelationshipUpdateHelper(IDbContextResolver contextResolver)
 {
     _context = contextResolver.GetContext();
 }