如果控制器方法名称不是“SaveChanges()”,则Breeze js保存更改不起作用

时间:2014-04-09 06:18:22

标签: c# jquery asp.net-mvc entity-framework breeze

您好我是BreezeJs

的新手

我在Controller上有一个post方法

// POST api/company/post
        [Authorize(Roles = "Admin")]
        [AcceptVerbs("POST")]
        [HttpPost]
        public object **SaveChanges**(JObject companyRequest)
        {
            return companyService.SaveEntity(companyRequest);
        }

我在breezejs中调用了这个方法

manager.**saveChanges**().then(saveSucceeded).fail(saveFailed);

saveChanges()与控制器方法名称相同。所以它现在正在运作!

但是,如果我将控制器方法名称SaveChanges()更改为SaveChangesCompany() 并将微风改为manager.SaveChangesCompany()

代码看起来像

// POST api/company/post
            [Authorize(Roles = "Admin")]
            [AcceptVerbs("POST")]
            [HttpPost]
            public object **SaveChangesCompany(JObject companyRequest)**
            {
                return companyService.SaveEntity(companyRequest);
            }

和微风一面

**manager.saveChangesCompany(**).then(saveSucceeded).fail(saveFailed);

然后它不起作用。为什么manager.saveChanges()确实有效且manager.saveChangesCompany()不起作用?

我如何使用breezejs做这个场景?

请帮帮我吧!谢谢 !

1 个答案:

答案 0 :(得分:3)

EntityManager上的saveChanges方法的名称与服务器上的SaveChanges方法之间没有物理连接。改变一个不会改变另一个。

如果要在控制器上使用其他方法名称,则需要在实体管理器上传递给saveChanges方法的SaveOptions中指定它:

var so = new SaveOptions({ resourceName: "SaveChangesCompany" });
manager.saveChanges(null, so );

有关详细信息,请参阅Breeze Documentation