Breeze 如何在服务器上获取未保存的实体但不保存?

Breeze 如何在服务器上获取未保存的实体但不保存?,breeze,Breeze,我需要将未保存的实体从客户端发送到服务器,但不需要保存更改 但是为了使用实体上的数据进行处理,然后更改它的一些值并将其传递回客户机 这可能吗? 如果没有,我有什么选择? 我尝试导出实体,然后将其发送到webapi控制器上获取JObject的方法,但没有找到将其反序列化到服务器实体的方法。我们正在做类似的事情。它将保存实体,因此我不确定这是否符合您的问题。 你可以做: entity.entityAspect.setModified() 然后发出saveChange()命令 然后您可以在服务器上进

我需要将未保存的实体从客户端发送到服务器,但不需要保存更改 但是为了使用实体上的数据进行处理,然后更改它的一些值并将其传递回客户机 这可能吗? 如果没有,我有什么选择?
我尝试导出实体,然后将其发送到webapi控制器上获取JObject的方法,但没有找到将其反序列化到服务器实体的方法。我们正在做类似的事情。它将保存实体,因此我不确定这是否符合您的问题。 你可以做:

entity.entityAspect.setModified()
然后发出saveChange()命令

然后您可以在服务器上进行计算。 在我们的例子中,我们使用的是breeze.webapi,因此我们在beforeSave(entity)方法中这样做


breeze by design会将更改后的实体发送回客户端,在客户端缓存会随着您在服务器上所做的更改而更新。

我们确实遇到了类似的问题,并找到了如下解决方案: 您需要考虑breeze管理其对象的方式

1.创建自定义saveBundle。 考虑复杂的Orthor对象。您需要在每个嵌套对象中按顺序填充您的保存包。 比如: var saveBundle=新数组()

2.创建自定义保存选项,从中可以指向服务器上的自定义保存方法 比如: var so=new breeze.SaveOptions({resourceName:“BookOrder”})

3.调用标准breeze函数并传递它创建的参数

saveChanges(saveBundle,so).fail(函数(){ //manager.rejectChanges();TODO检查所需内容

        deferred.resolve(true);
    });
在服务器上,您需要准备好自定义函数并钩住一些代理

[HttpPost] public SaveResult BookOrder(JObject orderBundle) {

        context.BeforeSaveEntityDelegate = OrderBeforeSaveEntity;
        context.BeforeSaveEntitiesDelegate = SaveOrder;
        context.AfterSaveEntitiesDelegate = BookOrderAfterSave;
        try
        {
            return context.SaveChanges(orderBundle);
        }
        catch (Exception)
        {

            throw;
        }

    }
你可以在前两个代表中找到很多东西,但这是你要寻找的最后一个

private void BookOrderAfterSave(Dictionary<Type, List<EntityInfo>> orderSaveMap, List<KeyMapping> orderKeyMappings)
        {
            var orderEntity = orderSaveMap.Where(c => c.Key == typeof(BL.Orders.Order)).Select(d => d.Value).SingleOrDefault();

            BL.Orders.Order order = (BL.Orders.Order)orderEntity[0].Entity; //your entity
//logic here
}
private void BookOrderAfterSave(字典orderSaveMap,列表orderKeyMappings)
{
var orderEntity=orderSaveMap.Where(c=>c.Key==typeof(BL.Orders.Order)).Select(d=>d.Value.SingleOrDefault();
BL.Orders.Order Order=(BL.Orders.Order)orderEntity[0]。Entity;//您的实体
//这里的逻辑
}
希望它指向正确的方向

private void BookOrderAfterSave(Dictionary<Type, List<EntityInfo>> orderSaveMap, List<KeyMapping> orderKeyMappings)
        {
            var orderEntity = orderSaveMap.Where(c => c.Key == typeof(BL.Orders.Order)).Select(d => d.Value).SingleOrDefault();

            BL.Orders.Order order = (BL.Orders.Order)orderEntity[0].Entity; //your entity
//logic here
}