首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在服务器上获取未保存的实体但不保存?

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

Stack Overflow用户
提问于 2014-01-16 18:47:43
回答 2查看 191关注 0票数 0

我需要将未保存的实体从客户端发送到服务器,但不是为了保存更改,而是为了使用实体上的数据进行处理,然后更改它的一些值并将其传递回客户端。这是可能的吗?如果不是,我的选择是什么?我尝试导出实体,然后将其发送到webapi控制器上的一个方法,该方法获取一个JObject,但没有找到将其反序列化到服务器实体的方法

EN

回答 2

Stack Overflow用户

发布于 2014-01-18 14:59:02

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

1.创建自定义saveBundle。考虑复杂的order,object.You需要用order中的每个嵌套对象填充您的保存包。Like: var saveBundle = new Array();

代码语言:javascript
复制
    saveBundle.push(order.SaleAccountingInfo);
    saveBundle.push(order.CostAccountingInfo);
    saveBundle.push(order);

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

3.调用标准微风函数并传递创建的参数

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

代码语言:javascript
复制
        deferred.resolve(true);
    });

在服务器上,你需要准备好你的自定义函数,并挂接一些微风委托

HttpPost公共SaveResult BookOrder(JObject orderBundle) {

代码语言:javascript
复制
        context.BeforeSaveEntityDelegate = OrderBeforeSaveEntity;
        context.BeforeSaveEntitiesDelegate = SaveOrder;
        context.AfterSaveEntitiesDelegate = BookOrderAfterSave;
        try
        {
            return context.SaveChanges(orderBundle);
        }
        catch (Exception)
        {

            throw;
        }

    }

您可以在前两个委托中做很多事情,但这是您要寻找的最后一个委托

代码语言:javascript
复制
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
}
票数 1
EN

Stack Overflow用户

发布于 2014-01-16 20:55:06

我们在这里也在做类似的事情。它将保存实体,所以我不确定这是否符合您的问题。您可以执行以下操作:

代码语言:javascript
复制
entity.entityAspect.setModified()

然后发出一个saveChange()

然后你就可以在服务器上进行计算了。在我们的例子中,我们使用的是breeze.webapi,所以我们在beforeSave(entity)方法中执行此操作。

breeze按照设计将更改后的实体发送回客户端,在客户端缓存会根据您在服务器上所做的更改进行更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21159591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档