【发布时间】:2014-04-30 03:16:40
【问题描述】:
假设我有一个平均分数的电影实体。用户可以对电影进行评分,为此我在客户端调用 datacontext.savechanges,将 Rating 对象发送到服务器。在服务器端,调用 SaveChanges 方法,在 BeforeSaveEntity 方法中,我调整了电影的平均分。
问题来了:如何从服务器的 SaveChanges 方法(例如在 SaveResult 对象中)返回平均分数?
我以为我可以将电影实体添加到 SaveResult 实体列表中,但随后: - 我需要从 saveBundle 参数中访问属性 - 我必须重新查询数据库,这是我在 BeforeSaveEntity 中所做的
谢谢
尼古拉斯
【问题讨论】:
-
更新 BeforeSaveEntities 方法中的分数。请务必将持有 score 属性的实体包含到保存地图中。
-
是的,我应该可以这样做,但会出现“序列不包含匹配元素”错误。
-
一些代码可以帮助我更好地理解这个问题。不要忘记您可以覆盖 SaveChangesCore,这可能会提供一些调整内容的机会。然后,在 Web API 返回 SaveResult 之前,您还有另一个机会(您可以在某个地方存储一个值以在控制器中使用)。最后,SaveResult 本身并没有什么神圣之处。从客户端的角度来看,它是一种结构类型:任何序列化预期内容的内容都将被 BreezeJS EntityManager 接受。很多选择。
-
有趣!但是,您提到的方法(SaveChangesCore)在文档中找不到。 (breezejs.com/documentation/custom-efcontextprovider) 仅在 NoDB 示例中提到,此后我没有阅读过。我使用 DB :)。无论如何,与此同时,我实际上使用了一种解决方法并将我需要的值存储在 System.Web.HttpContext.Current.Items 中。
标签: breeze