保存后查询中的实体加倍

时间:2013-01-30 19:30:16

标签: breeze

我正在使用Breeze创建动态数据编辑网格。在向管理器添加新实体后,编辑属性,将其保存到WebAPI服务并进行本地查询,我得到两次相同的实体。一个实体使实体状态中的服务器生成密钥保持不变,另一个实体使用primarykey -1并在entitystate中添加。

不知道我做错了什么或者不了解Breeze背后的机制。

注意:

我正在使用自定义contextprovider并重写了savechanges方法。我在keymap中返回实体类型,realvalue(DB生成的密钥),tempvalue(由Breeze分配的密钥,例如-1)。

EDIT。

我解决了这个问题。我的自定义contextprovider中有一个错误。我忘了将生成的键映射实际添加到savechangescore方法的结果中。

2 个答案:

答案 0 :(得分:0)

要检查的第一件事是你是否实际上用临时密钥保存实体(即-1)。

如果是这种情况(你显然不想要),那么这个entityType很可能在其元数据中没有正确的'AutoGeneratedKeyType'。您可以通过调用MetadataStore.getEntityType方法并检查元数据来检查这一点。

如果不是这种情况,请将代码发布到您的自定义contextprovider。

答案 1 :(得分:0)

我解决了这个问题,我的自定义contextprovider中有一个错误。我忘了将生成的键映射添加到savechangescore方法的结果中。