使用breeze js不要直接与DBContext交互

时间:2012-12-31 04:47:33

标签: asp.net-mvc breeze singlepage

我对breezejs很新,并且有几个问题。

我认为breezejs有很好的功能,所以我可以替换自己的datacontext。但是,我不希望breezejs直接与dbcontext层交互。事实上,在我的应用程序中,服务层只向控制器公开ViewModels - 甚至不是真正的商业模型。所以我不确定我是否可以使用Breeze,因为在Breeze的几个例子中,我只看到Breeze直接与DBContext交互。

感谢。

=========================================

感谢沃德的回答,

关于我喜欢Breeze的功能,它将有助于减少构建我自己的客户端视图模型的大量时间。为了构建SPA,维护客户端视图模型对我来说真的很痛苦,特别是我的应用程序还有桌面应用程序客户端和其他手持设备的应用程序。另外,要处理从JSon对象到Knockout的映射 - 这意味着对于每个视图模型,我也需要一个映射器。

目前,我的架构是这样的:

服务器端: 存储库层< =>服务层< =>控制器(使用暴露给客户端的Web API)

控制器只能通过服务发送请求来获取数据(以视图模型的格式)。

所以,我的问题是,是否有可能利用Breeze进行查询,以及它是否与淘汰赛整合。

2 个答案:

答案 0 :(得分:3)

Breeze永远不会直接使用你的DbContext;它适用于通过服务上的端点公开的服务模型(例如,Web API控制器方法)。但是当客户端可以查询和保存与服务器上的实体结构相同的实体时,您肯定从Breeze获得最大价值。

您可以使用Breeze检索ViewModel - 您可以使用Breeze调用几乎任何HTTP服务方法。我不清楚Breeze如何在您检索到它们后帮助您在客户端上管理这些ViewModel。

Breeze的哪些功能对你来说似乎“非常好”?您对该问题的回答将帮助您确定Breeze是否可以为您的首选架构风格提供帮助。

答案 1 :(得分:1)

直接使用DBContext在没有API控制器的情况下通过Breeze查询数据应该没问题,保存可能更难但仍然可管理。我认为最复杂的部分是向客户端提供元数据。

根据this SO answer,用于公开DBContext直接在一周左右的其他来源的元数据的示例。

同时,检查BreezeJS spa-template sample,因为服务器端涉及存储库模式,这使其与您的数据访问设置类似。