Beispiel #1
0
        internal static EfContext Create(Conexao connection, SessaoDeRequisicaoDoUsuario userSessionRequest)
        {
            var connectionString          = connection.ObterStringDeConexao(userSessionRequest);
            var createDatabaseIfNotExists = connection.CriarOBancoDeDadosCasoNaoExista;


            var dbContextType = connection.TipoDoContexto;
            var efContext     = Activator.CreateInstance(dbContextType, new object[] { connectionString }).DnCast <EfContext>();

            efContext.UserSessionRequest = userSessionRequest;

            CreateDB(createDatabaseIfNotExists, efContext);

            return(efContext);
            // Deixar essa parte de interceptador pra quando for necessários.
            // var interceptor = new ContextInterceptor(Guid.Empty);
            // return new ProxyGenerator().CreateClassProxy(typeof(EfContext), new object[] { connectionString }, interceptor) as EfContext;
        }
Beispiel #2
0
 internal static void AdicionarSessaoDeRequisicao(SessaoDeRequisicaoDoUsuario sessaoDeRequisicaoDoUsuario) =>
 SessoesDeRequisicoesDeUsuarios.TryAdd(sessaoDeRequisicaoDoUsuario.IdentificadorDaSessao, sessaoDeRequisicaoDoUsuario);
 public static IDnObjetosTransacionais Criar(Type transactionObjectsType, Conexao connection, SessaoDeRequisicaoDoUsuario userSessionRequest)
 {
     return(Activator.CreateInstance(transactionObjectsType, connection, userSessionRequest) as IDnObjetosTransacionais);
 }
Beispiel #4
0
        internal static DnServicoTransacionalBase Criar(Type tipoDeServico, object httpContext, SessaoDeRequisicaoDoUsuario sessaoDeRequisicao = null)
        {
            var sessionId = Guid.NewGuid();

            tipoDeServico = GetSpecializedService(tipoDeServico);
            var service     = FabricaDeServicoLazy.Criar(tipoDeServico, sessionId);
            var userSession = sessaoDeRequisicao ?? CreateUserSession(httpContext, sessionId, service);

            service.DefinirSessaoDoUsuario(userSession);
            return(service);
        }
Beispiel #5
0
 internal static DnServicoTransacionalBase Criar(Type tipoDeServico, SessaoDeRequisicaoDoUsuario sessaoDeRequisicao)
 {
     return(Criar(tipoDeServico, sessaoDeRequisicao.HttpContext, sessaoDeRequisicao));
 }
Beispiel #6
0
 protected internal virtual void DefinirSessaoDoUsuario(SessaoDeRequisicaoDoUsuario sessaoDaRequisicao)
 {
     SessaoDaRequisicao = sessaoDaRequisicao;
 }
Beispiel #7
0
        public static DnServicoTransacionalBase GetServiceInstanceByEntity(this Type entityType, SessaoDeRequisicaoDoUsuario SessionRequest)
        {
            if (entityType?.IsSubclassOf(typeof(DnEntidade)) != true)
            {
                throw new DesenvolvimentoIncorretoException($"The service instance attempt using the {nameof(GetServiceInstanceByEntity)} method failed because the passed type is not a {nameof(DnEntidade)}");
            }

            var type        = (Setup.ConfiguracoesGlobais.TipoGenericoDeServico) ?? typeof(DnServico <>);
            var serviceType = type.MakeGenericType(entityType).GetSpecializedService();

            return(serviceType.GetServiceInstanceByServiceType(SessionRequest));
        }
Beispiel #8
0
        public static DnServicoTransacionalBase GetServiceInstanceByServiceType(this Type serviceType, SessaoDeRequisicaoDoUsuario SessionRequest)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }
            if (SessionRequest == null)
            {
                throw new ArgumentNullException(nameof(SessionRequest));
            }
            if (serviceType.Name == "DnDynamicProxy")
            {
                serviceType = serviceType.BaseType;
            }
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            if (!serviceType.IsSubclassOf(typeof(DnServicoTransacionalBase)))
            {
                throw new DesenvolvimentoIncorretoException($"The service instance attempt using the {nameof(GetServiceInstanceByServiceType)} method failed because the passed type is not a {nameof(DnServicoTransacionalBase)}");
            }

            if (SessionRequest.Servicos.TryGetValue(serviceType, out var ser))
            {
                return(ser as DnServicoTransacionalBase);
            }

            var service = FabricaDeServico.Criar(serviceType, SessionRequest.LocalHttpContext, SessionRequest);

            SessionRequest.Servicos.Add(serviceType, service);

            return(service);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TransactionObjects"/> class.
 /// Inicializa objeto de transação.
 /// </summary>
 /// <param Nome="dataBaseConnectionString">
 /// String de conexão com o banco de dados.
 /// </param>
 public TransactionObjects(Conexao connection, SessaoDeRequisicaoDoUsuario userSessionRequest)
 {
     this.UserSessionRequest = userSessionRequest;
     this.Sessao             = ContextFactory.Create(connection, UserSessionRequest);
 }