Mobile 轻松使用asp.net web api、reportorities和UoW

Mobile 轻松使用asp.net web api、reportorities和UoW,mobile,asp.net-web-api,breeze,repository-pattern,unit-of-work,Mobile,Asp.net Web Api,Breeze,Repository Pattern,Unit Of Work,我刚开始使用breeze.js,它看起来很棒,但有一些东西让我感到困惑。我是一个新手,如果我的问题是愚蠢的,或者没有意义,我很抱歉:) 在服务器端,我有一些存储库和UoW,我正在尝试创建REST服务。但我想从Android、IOS等移动设备以及我的SPA(感谢John Papa提供的HotTower)上使用这项服务 我的困惑是,如果我按照微风来安排我的UoW,比如使用EFContextProvider或使用 public SaveResult SaveChanges(JObject saveB

我刚开始使用breeze.js,它看起来很棒,但有一些东西让我感到困惑。我是一个新手,如果我的问题是愚蠢的,或者没有意义,我很抱歉:)

在服务器端,我有一些存储库和UoW,我正在尝试创建REST服务。但我想从Android、IOS等移动设备以及我的SPA(感谢John Papa提供的HotTower)上使用这项服务

我的困惑是,如果我按照微风来安排我的UoW,比如使用EFContextProvider或使用

 public SaveResult SaveChanges(JObject saveBundle)
    {
        return _contextProvider.SaveChanges(saveBundle);
    }
而不是使用

public void Commit()
    {
        //System.Diagnostics.Debug.WriteLine("Committed");
        DbContext.SaveChanges();
    }
1) 我是否仍然能够从非breeze控制器使用UoW方法(如savechanges)

2) 我是否仍然能够在移动设备(不使用breezejs)中使用本机应用程序的Rest服务

1)不,您不能在其他控制器中使用breeze
contextProvider.SaveChanges()

contextProvider.SaveChanges(JObject saveBundle)

breeze服务器端希望
saveBundle
是由breeze客户端js创建的json数据

2) 使用自己的存储库为REST创建任何其他webapi控制器。没有breeze客户端js,您无法使用breeze的存储库saveChanges

更新
风起得这么快,他们现在有了一个项目。它可以集成到您的.net应用程序中。请参见Jay Traband回答@Didar正确地观察到
JObject saveBundle
特定于Breeze客户端使用Web API现成数据服务适配器发送的帖子正文

我想让您知道,如果您想这样做,Breeze客户端
saveChanges
方法调用可以使用单独的PUT/POST/DELETE/PATCH方法更新传统的RESTy服务。您必须将客户端“数据服务适配器”更改为能够理解服务器API的适配器。。。或者更可能编写一个与API特性匹配的API

编写自定义数据服务适配器肯定不是一项新手任务。我们将很快展示如何做到这一点。。。但这不是新手的任务。。。更多的是中间人的任务

我的观点是,这是要做的,它并不难,你可以放心,它将在你需要的时候在你的能力范围内

FWIW,在我看来,您所展示的代码实际上都不符合存储库或UOW模式。您展示的是完全可用的启动代码。。。代码,让您启动和运行的麻烦最小

一旦开始,就要重构,这样对
contextProvider
的引用就不再存在于控制器中。它们将被包装在某种类型的存储库或工作单元组件中

这是另一天的故事