Как использовать хранимую процедуру с бэкэнд-сервисом Azure Mobile .Net? - PullRequest
0 голосов
/ 08 марта 2019

Я использую службу Azure Mobile для извлечения данных из моей таблицы SQL. Если я использую значение по умолчанию Query() в качестве типа возврата, то я могу получить все записи в своем мобильном приложении:

Это отлично работает:

// GET tables/SaleItem
 public IQueryable<SaleItem> GetAllSaleItems()
 {
      return Query();
  }

В моем мобильном приложении я использую автономную синхронизацию Azure, поэтому в приведенной выше реализации вызов PullAsync() выполняется правильно.

Теперь, если я изменю свой бэкэнд, чтобы получать данные через хранимую процедуру, как показано ниже, чем вызов PullAsync(), переходящий в тупик и не способный выполнить код после этого.

public IQueryable<SaleItem> GetAllSaleItems()
{
   var connection = new SqlConnection(ConnectionString);

   var command = new SqlCommand("SP_GetSalesData", connection);
   command.CommandType = CommandType.StoredProcedure;

   connection.Open();

   var saleItems = new List<SaleItem>();

   using (var reader = command.ExecuteReader())
   {
     while (reader.Read())
      {
        var brand = new SaleItem
         {
           Id = reader.GetValue(0).ToString(),
           Name = reader.GetValue(1).ToString(),
           Description = reader.GetValue(2).ToString(),
           Price = Convert.ToDecimal(reader.GetValue(3)),
           ImageUrl = reader.GetValue(4).ToString(),
           Version = Encoding.ASCII.GetBytes(reader.GetValue(5).ToString()),
           CreatedAt = new DateTimeOffset(DateTime.Now),
           UpdatedAt = new DateTimeOffset(DateTime.Now),
        };
     saleItems.Add(brand);
     }
    }

   connection.Close();
   var items = saleItems.AsQueryable();
   return items;
}

В Почтальоне я вижу, что данные поступают правильно.

Я делаю неправильное преобразование для свойства Version? Потому что это единственное поле, которое имеет разные значения в обоих ответах.

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