/// <summary> /// Registra as informações do usuário na transação do storedprocedure. /// </summary> /// <param name="transaction"></param> protected override void RegisterUserInfo(IStoredProcedureTransaction transaction) { if (!Colosoft.Security.UserContext.UserProcessing) { var profile = ProfileManager.CurrentProfileInfo; var user = Colosoft.Security.UserContext.Current.User; if (profile != null && user != null) { var query = "CREATE TABLE #UserInfo (ProfileId int, UserId int)"; var parameters = new GDAParameter[] { new GDAParameter("?profileId", profile.ProfileId), new GDAParameter("?userKey", int.Parse(user.UserKey)) }; var session = ((GDAStoredProcedureTransaction)transaction).Session; var da = new DataAccess(session.ProviderConfiguration); var r1 = da.ExecuteCommand(session, query); var query1 = "INSERT INTO #UserInfo(ProfileId, UserId) VALUES(?profileId, ?userKey)"; da.ExecuteCommand(session, query1, parameters); } } }
/// <summary> /// Executa as várias consultas. /// </summary> /// <param name="queries"></param> /// <returns></returns> public override IEnumerable <IQueryResult> Execute(QueryInfo[] queries) { queries.Require("queries").NotNull(); var result = new IQueryResult[queries.Length]; Dictionary <QueryExecutionGroup, IList <int> > providerDictionary = new Dictionary <QueryExecutionGroup, IList <int> >(QueryExecutionGroup.Comparer); for (int i = 0; i < queries.Length; i++) { string providerName = ProviderLocator.GetProviderName(queries[i]); var group = new QueryExecutionGroup(providerName, queries[i].IsolationLevel); IList <int> indexes; if (providerDictionary.TryGetValue(group, out indexes)) { indexes.Add(i); } else { indexes = new List <int>(); indexes.Add(i); providerDictionary.Add(group, indexes); } } IStoredProcedureTransaction storedProcedureTransaction = null; foreach (var provider in providerDictionary) { using (var session = CreateSession(provider.Key)) { RegisterSession(session); foreach (var index in provider.Value) { IQueryResult queryResult = null; try { if (queries[index].StoredProcedureName == null) { SqlQueryParser parser = CreateParser(queries[index]); string queryString = parser.GetText(); try { queryResult = ExecuteQuery(session, queryString, queries[index]); } catch (GDAException ex) { throw new GDAException(string.Format("{0}. Query: {1}", ex.Message, queries[index].ToString()), ex.InnerException); } } else { if (storedProcedureTransaction == null) { storedProcedureTransaction = new GDAStoredProcedureTransaction(session, provider.Key.ProviderName); if (!queries[index].IgnoreRegisterUserInfo) { RegisterUserInfo(storedProcedureTransaction); } } queryResult = ExecuteStoredProcedure(session, queries[index]); } } catch { if (session is GDATransaction) { ((GDATransaction)session).Rollback(); } throw; } yield return(queryResult); } if (session is GDATransaction) { ((GDATransaction)session).Commit(); } } } }
protected override void RegisterUserInfo(IStoredProcedureTransaction a) { }
/// <summary> /// Registra as informações do usuário no banco de dados. /// </summary> /// <param name="transaction">Transação que será utilizada na operação.</param> protected abstract void RegisterUserInfo(IStoredProcedureTransaction transaction);