我正在开发visual studio中的c#/ mvc / breeze / angular项目,并且我被要求构建全新的功能。目前,我们已经设置了存储过程,并且它正在一个完全不同的地方用于提取数据,现在我们正在将使用此存储过程的“工作表”迁移到此c#/ mvc / breeze / angular项目。存储过程返回一个常规记录集 - 从mytable中选择* ...它会执行几个复杂的操作(不仅仅是基本查询)来返回记录...
我在c#/ mvc / breeze / angular项目中看到到目前为止,它们只使用存储过程两种方式:1种方式是存储过程返回单个值,另一种方式是返回多个选择如下:select * from table1 从table2中选择* 从表3中选择*。
我的问题是:我应该如何开始我的项目(将它添加到这个...) - 我可以使用现有的存储过程还是有一些方法将它与微风集成以消除对存储的需要程序......
我看到他们在这个c#/ mvc / breeze / angular项目中设置了一个表格样式的工作表(带有过滤器),但是我不能完全遵循它,但它似乎没有达到存储过程。我是微风角色的新手。
答案 0 :(得分:0)
如果我理解正确,您希望breeze检索存储过程生成的数据。 this answer有帮助吗?
简而言之,您可以定义要从存储过程中提取的对象的类:
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将通过实体管理器返回
由于breeze只会返回普通的Javascript对象,你也可以使用$ http进行非微风api端点。
如果您需要所有的花里胡哨(缓存,自动连接到其他实体),您将必须创建一个视图并将其包含在您的模型中,如表,并定义适当的外键和导航属性。
希望这有帮助。