我最近开始使用Breeze.js和ASP.NET Web API2。我接下来经历了几个教程,视频等......但是无法找到对以下问题的正确答案。
您应该在微风级别执行多少业务逻辑处理,以及在API级别应该执行多少操作。例如,当使用breeze时,API所做的就是返回getall()或getbyID()类型的数据过滤?让我们说我们希望通过连接两个表来获得一组记录。通常我们所做的是在服务器端获取所有这些数据并创建一个viewmodel并将其推送回客户端。但是随着微风,我们可以在客户端管理数据,我们应该这样做吗?
举例说明你有员工和员工的地方。部门表,在Employee表中使用FkDepartmentID,但在客户端,您需要部门名称。我的问题是,是使用breeze还是通过web api itslef进行检索。
答案 0 :(得分:3)
假设"业务逻辑处理"指的是数据检索选项,我不认为这是一个通用的答案。这里有一些使用案例和方法,使用严格的微风来检索"形状"用户界面工作需要的是:
考虑使用single relation expand加载员工。这将确保部门与员工一起加载,从而可以通过employee.Department.Name属性访问部门名称。
var query = EntityQuery.from('Employees')
.where('EmployeeId', '==', 22)
.expand('Department');
<select>
元素来选择他们的部门。考虑加载员工而不扩展其部门。另外,加载lookup list部门实体,以便您可以创建选择元素的选项。
考虑使用projection query来获取具有您需要显示的属性的对象数组。
var query = EntityQuery.from('Employees')
.where('LastName', FilterQueryOp.StartsWith, 'C')
.select('FirstName, LastName, Department.Name')
.orderBy('LastName');