Я использую службу 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
? Потому что это единственное поле, которое имеет разные значения в обоих ответах.