Я работаю над aС#/mvc/breeze/angular project в visual studio, и меня попросили создать совершенно новые функции. В настоящее время у нас есть хранимая процедура, и она используется в совершенно другом месте для извлечения данных, и теперь мы переносим этот "рабочий лист", который использует эту хранимую процедуру для этого проекта С#/mvc/breeze/angular. Хранимая процедура возвращает обычный набор записей - выберите * из mytable... он выполняет несколько сложных действий (а не только базовые запросы), чтобы вернуть записи, хотя...
До сих пор я вижу в проекте С#/mvc/breeze/angular, они используют только хранимые процедуры двумя способами: 1 путь - это если хранимая процедура возвращает одно значение, а другой способ - если он возвращает несколько выборок, подобных этому: выберите * из таблицы1 выберите * из таблица2 выберите * из таблица3.
Мой вопрос: как мне начать работу над моим проектом (добавив его в этот...) - могу ли я использовать существующую хранимую процедуру или есть способ интегрировать ее с бризом, чтобы лишить необходимости хранимой процедуры.,
Я вижу, что у них есть рабочий лист таблицы с настройками (с фильтрами) в этом проекте С#/mvc/breeze/angular, и я не могу точно следовать ему, но, похоже, он не попадает в сохраненный процесс. Я новичок в мелочах.
Если я правильно понимаю, вы хотите, чтобы бриз извлекал данные, созданные хранимой процедурой. Помогает ли этот ответ?
Короче говоря, вы можете определить класс объекта, который вы будете извлекать из хранимой процедуры:
internal class RvRDetail
{
public string DistrictName { get; set; }
public string EmployeeName { get; set; }
public string SiteName { get; set; }
public System.DateTime CalendarDate { get; set; }
public string RevenueCategoryName { get; set; }
public decimal TotalRepayment { get; set; }
public decimal TotalRevenue { get; set; }
}
Затем в контроллере просто запустите свою хранимую процедуру так же, как и без ведома:
[BreezeController]
public class SeasonlessRvRController : BreezeAbstractApiController
{
// GET: breeze/SeasonlessRvR/RvRData
[HttpGet]
public object RvRData(string districtList="", string showAllPeriods="0")
{
var returnData = _dbContextProvider.Context.Database
.SqlQuery<RvRDetail>("SELECT * from dbo.udf_SeasonlessRvR(@DistrictList, @ShowAllPeriods)",
new SqlParameter("@DistrictList", districtList),
new SqlParameter("@ShowAllPeriods", showAllPeriods))
.ToList();
return returnData;
}
}
Breeze вернется через диспетчер объектов, когда вы запрашиваете конечную точку
Поскольку ветерок будет возвращать только обычные объекты Javascript, вы также можете сделать это с помощью конечной точки api без бризонта, используя $ http.
Если вам нужны все колокола и свистки (кэширование, автоматическая проводка до других объектов), вам нужно будет создать представление и включить его в свою модель, например таблицу, с соответствующими внешними ключами и свойствами навигации.
Надеюсь это поможет.
.from('RvRData')
, возвращая мой массив объектов RvRDetail. Если вам нужны навигационные свойства и дальнейшая интеграция в модель, а не только в данные, то вам, возможно, придется попытаться определить ее как представление, которое вы можете рассматривать точно так же, как таблицу в модели.