如何从Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling

时间:2015-07-03 05:32:08

标签: c# sql-server azure-sql-database enterprise-library

您好我是新的Azure SQL Server新手。我试图通过调用存储过程来连接SQL服务器并从那里返回一些数据。我传递了两个参数,如用户名和密码,然后从存储过程中获取有效用户的用户详细信息。

要连接Azure SQL服务器,我使用Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling从应用程序建立连接并使用通过此链接https://msdn.microsoft.com/en-us/library/dn961167.aspx提到的相同代码。但是这里使用public Action IssueQueryCommand_action;来执行针对连接的任何操作。在这种情况下,它不会返回任何结果。我想从上面的链接

中提到的ExecuteAction中获取DataReader
// [A.1] Connect, which proceeds to issue a query command.
                this.connectionRetryPolicy.ExecuteAction(this.EstablishConnection_action);

我可以使用https://msdn.microsoft.com/en-us/library/microsoft.practices.enterpriselibrary.transientfaulthandling.retrypolicy.executeaction%28v=pandp.60%29.aspx

中提到的ExecuteAction<TResult>选项

但不知道如何使用RetryPolicy.ExecuteAction Method

调用以下方法
public bool IsValidUser(string UserMail, string Password)
    {

        using (SqlCommand sqlCommand = this.rsConnection.CreateCommand())
        {
            sqlCommand.CommandText = ConstantsDAL.SP_IS_VALID_USER;
            sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;

            return Convert.ToBoolean(sqlCommand.ExecuteScalar());
        }
    }

您能帮我解决一下如何使用RetryPolicy.ExecuteAction方法获取标量值或数据头。

1 个答案:

答案 0 :(得分:0)

该解决方案可在MSDN https://social.msdn.microsoft.com/Forums/en-US/ca9a2344-d09b-4c64-a88b-fbd42360b876/how-to-retun-value-from-retrypolicyexecuteaction-in?forum=ssdsgetstarted

上找到

要重新发布MSDN答案,请使用以下命令:

connectionRetryPolicy.ExecuteAction( ()=> { IsValidUser (parameter1, parameter2); });