如何使用Breeze使用View和存储过程保存数据

时间:2014-11-10 22:22:55

标签: breeze

我通过WebAPI在服务器上使用BreezeJs。我继承了第三方应用程序,它从各种查找表和自定义字段表中提取数据。为简化起见,我创建了一个SQL视图,它将所有数据拉到一起并为它们提供了良好的列名。该实体被称为"游戏"我的移动应用程序在客户端使用Breeze来获取游戏。一切正常。

我不确定如何进行保存。

我需要使用标准的Breeze保存语法,但在服务器上我假设需要拦截Save方法并运行自定义存储过程以将每列保存到正确的表中。

所以我的问题是:我是否在正确的轨道上如何使用视图(而不是表格)和Breeze保存实体?

2 个答案:

答案 0 :(得分:1)

您已经使用视图抽象了阅读游戏数据的复杂性,现在您需要做的就是使用instead of触发器抽象出数据的写入(创建/更新/删除)。这种方法会使您的视图行为就像一个表,因此您的应用程序代码可以完全忘记它是一个视图,并像对待任何其他表一样对待它。

TechNet article

  

INSTEAD OF触发器的主要优点是它们启用了视图   这是不可更新的,以支持更新。基于的视图   多个基表必须使用INSTEAD OF触发器来支持   插入,更新和删除多个引用数据的插入,更新和删除   表

答案 1 :(得分:1)

你所尝试的内容非常有意义。在这里查看保存拦截的讨论:http://www.getbreezenow.com/documentation/contextprovider

但是,鉴于微风可以直接支持您的对象图。使用结构化更接近表结构的实体并使用breeze导航属性访问相关数据可能更有意义。您仍然可以通过返回实体集合的匿名投影查询(适用于查找表)或使用EntityQuery.extend方法在一次传递中查看相关数据来批量加载数据。

显然,决定采用哪种方式取决于您需要编写的附加代码的复杂性和数量。但是,如果您只有一些观点,那么我可能会采用您建议的方法。随着观点数量的增加,我建议的替代方法可能更有意义。