当前位置: 首页>>代码示例>>C#>>正文


C# IQueryContext.AutoCommit方法代码示例

本文整理汇总了C#中IQueryContext.AutoCommit方法的典型用法代码示例。如果您正苦于以下问题:C# IQueryContext.AutoCommit方法的具体用法?C# IQueryContext.AutoCommit怎么用?C# IQueryContext.AutoCommit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IQueryContext的用法示例。


在下文中一共展示了IQueryContext.AutoCommit方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ExecuteQuery

        protected virtual IQueryResponse[] ExecuteQuery(IQueryContext context, string text, IEnumerable<QueryParameter> parameters)
        {
            // TODO: Log a debug message..

            IQueryResponse[] response = null;

            try {
                try {
                    // For simplicity - all database locking is now exclusive inside
                    // a transaction.  This means it is not possible to execute
                    // queries concurrently inside a transaction.  However, we are
                    // still able to execute queries concurrently from different
                    // connections.
                    //
                    // It's debatable whether we even need to perform this Lock anymore
                    // because we could change the contract of this method so that
                    // it is not thread safe.  This would require that the callee ensures
                    // more than one thread can not execute queries on the connection.
                    context.Session.ExclusiveLock();

                    // Execute the Query (behaviour for this comes from super).
                    response = CoreExecuteQuery(context, text, parameters);

                    // Return the result.
                    return response;

                } finally {
                    try {
                        // This is executed no matter what happens.  Very important we
                        // unlock the tables.
                        context.Session.ReleaseLocks();
                    } catch (Exception e) {
                        // TODO: Log errors ...
                    }
                }
            } finally {
                // This always happens after tables are unlocked.
                // Also guarenteed to happen even if something fails.

                // If we are in auto-commit mode then commit the Query here.
                // Do we auto-commit?
                if (context.AutoCommit()) {
                    // Yes, so grab an exclusive Lock and auto-commit.
                    try {
                        // Lock into exclusive mode.
                        context.Session.ExclusiveLock();

                        // If an error occured then roll-back
                        if (response == null) {
                            // Rollback.
                            context.Session.Rollback();
                        } else {
                            try {
                                // Otherwise commit.
                                QueryContext.Session.Commit();
                            } catch (Exception e) {
                                foreach (IQueryResponse queryResponse in response) {
                                    // Dispose this response if the commit failed.
                                    DisposeResult(queryResponse.ResultId);
                                }

                                // And throw the SQL Exception
                                throw;
                            }
                        }
                    } finally {
                        context.Session.ReleaseLocks();
                    }
                }
            }
        }
开发者ID:prepare,项目名称:deveeldb,代码行数:71,代码来源:ServerConnector.cs

示例2: Authenticate

        protected virtual bool Authenticate(string defaultSchema, string username, string password)
        {
            if (CurrentState == ConnectorState.Authenticated &&
                QueryContext != null)
                throw new InvalidOperationException("Already authenticated.");

            // TODO: Log a debug information

            // TODO: Log an information about the logging user...

            try {
                QueryContext = OnAuthenticate(defaultSchema, username, password);
                if (QueryContext == null)
                    return false;

                QueryContext.AutoCommit(autoCommit);
                QueryContext.IgnoreIdentifiersCase(ignoreIdentifiersCase);
                QueryContext.ParameterStyle(parameterStyle);

                ChangeState(ConnectorState.Authenticated);

                return true;
            } catch (Exception e) {
                // TODO: throw server error
                throw;
            }
        }
开发者ID:prepare,项目名称:deveeldb,代码行数:27,代码来源:ServerConnector.cs


注:本文中的IQueryContext.AutoCommit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。