2012-12-31 64 views
4

我很新與breezejs和有幾個問題。使用微風js不要直接與DBContext交互

我認爲breezejs有很好的功能,所以我可以替換我自己的datacontext。但是,我不想讓breezejs直接與dbcontext層進行交互。實際上,在我的應用程序中,服務層只向ViewController公開ViewModels - 甚至不是真正的商業模型。所以我不確定我是否可以使用Breeze,因爲在Breeze的一些例子中,我只看到Breeze直接與DBContext交互。

謝謝。

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

謝謝病房的答案,

關於我喜歡Breeze的功能是,它將有助於減少大量時間來構建我自己的客戶端視圖模型。而構建一個SPA,維護客戶端視圖模型對我來說真的很痛苦,特別是我的應用程序也有桌面應用程序客戶端和其他手持設備的應用程序。另外,爲了處理從JSon對象到Knockout的映射 - 這意味着每個視圖模型,我也需要一個映射器。

目前,我的架構是這樣的:

服務器端: 庫層< =>服務層< =>控制器(與Web API暴露給客戶端)

控制器只可以通過服務發送請求來獲取數據(採用View Model的格式)。

所以,我的問題是是否有可能利用Breeze進行查詢以及與knockout的整合。

回答

3

微風不會直接與您的DbContext工作;它可以與您通過服務上的端點公開的服務模型(例如,Web API控制器方法)協同工作。但是,當客戶端可以查詢和保存與服務器上的實體結構相同的實體時,您當然可以從Breeze中獲得最大價值。

您可以使用Breeze檢索ViewModels - 您可以使用Breeze調用幾乎任何HTTP服務方法。我不清楚Breeze將如何幫助您在檢索到客戶端後管理客戶端上的ViewModel。

Breeze的哪些功能似乎「很漂亮」給你?你對這個問題的回答將幫助你確定Breeze是否能夠對你喜歡的建築風格有所幫助。

1

直接通過Breeze通過Breeze查詢數據,而不使用API​​控件直接使用DBContext應該沒有問題,保存可能更困難但仍可管理。我認爲最複雜的部分是向客戶端獲取元數據。

根據this SO answer,用於從其他來源公開元數據的示例,DBContext直接應該在一週內出局。

同時,檢查BreezeJS spa-template sample,因爲在服務器端存在與存儲庫模式相關的存儲庫模式,這使得它與您的數據訪問設置類似。