Как выполнить хранимую процедуру в модуле wcf c # - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю модуль wcf, который я хотел бы выполнить хранимую процедуру и вернуть результаты.Это то, что у меня есть

public static class Provder
{

 private const string CommandSchema_FullName = "Table3";
    public static IEnumerable<ProviderModel> Get(Func<ProviderModel> )
    {
        var query = new StringBuilder();
        query.AppendFormat("SELECT * FROM {0}", CommandSchema_FullName);
        if (criteria != null)
            return ExecuteQuery(query.ToString()).Where(criteria).ToArray();
        return ExecuteQuery(query.ToString());  

// я могу читать из таблицы, как указано выше, я не уверен, как добавить новую хранимую процедуру, которую я хотел бы вызвать}

    private static IEnumerable<ProviderModel> ExecuteQuery(string query)
    {
        var result = new List<ProviderModel>();
        using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["netTiersConnectionString"].ToString()))
        {
            sqlConnection.Open();
            var reader = new SqlCommand(query, sqlConnection).ExecuteReader();
            while (reader.Read())
            {
                result.Add(new ProviderModel
                {

                });
            }
            sqlConnection.Close();
        }
        return result;
    }
    private static bool ExecuteCommand(string command)
    {
        var result = false;
        using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["netTiersConnectionString"].ToString()))
        {
            sqlConnection.Open();
            try
            {
                var recordsAffected = new SqlCommand(command, sqlConnection).ExecuteNonQuery();
                result = true;
            }
            catch (SqlException)
            {
                result = false;
            }
            finally
            {
                sqlConnection.Close();
            }
        }
        return result;
    }
}
public class ProviderModel
{

}

Это хранимая процедура, которую я хочу вызвать в описанных выше методах

 CREATE PROCEDURE GetListCodes 
AS
BEGIN
    select concat(p.CourseName,s.LeagueTitle,' ',p.Abbreviation) As Result,p.ProgramCode
  FROM Table1 p inner join Table2 s on p.Code=s.Code
END
GO

Я не уверен, как вызывать sp GetListCodes в приведенной выше модели wcf.У меня нет параметров для передачи, я просто хотел бы выполнить хранимую процедуру и получить результаты.

1 Ответ

0 голосов
/ 04 февраля 2019

Что нужно для исключения процедуры сохранения, в команде есть простая строка

cmd.CommandType = CommandType.StoredProcedure;

В вашем случае выпришлось бы заменить строку

var recordsActed = new SqlCommand (команда, sqlConnection) .ExecuteNonQuery ();

на

var cmd= new SqlCommand(command, sqlConnection);
cmd.CommandType = CommandType.StoredProcedure;
var recordsAffected = cmd.ExecuteNonQuery();

Тамхороший небольшой учебник, который вы можете найти на https://csharp -station.com / Tutorial / AdoDotNet / Lesson07

И у Miscrosoft также есть статья, расположенная по адресу https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/executing-a-command

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...