我正在使用Breeze创建动态数据编辑网格。在向管理器添加新实体后,编辑属性,将其保存到WebAPI服务并进行本地查询,我得到两次相同的实体。一个实体使实体状态中的服务器生成密钥保持不变,另一个实体使用primarykey -1并在entitystate中添加。
不知道我做错了什么或者不了解Breeze背后的机制。
注意:
我正在使用自定义contextprovider并重写了savechanges方法。我在keymap中返回实体类型,realvalue(DB生成的密钥),tempvalue(由Breeze分配的密钥,例如-1)。
EDIT。
我解决了这个问题。我的自定义contextprovider中有一个错误。我忘了将生成的键映射实际添加到savechangescore方法的结果中。
答案 0 :(得分:0)
要检查的第一件事是你是否实际上用临时密钥保存实体(即-1)。
如果是这种情况(你显然不想要),那么这个entityType很可能在其元数据中没有正确的'AutoGeneratedKeyType'。您可以通过调用MetadataStore.getEntityType方法并检查元数据来检查这一点。
如果不是这种情况,请将代码发布到您的自定义contextprovider。
答案 1 :(得分:0)
我解决了这个问题,我的自定义contextprovider中有一个错误。我忘了将生成的键映射添加到savechangescore方法的结果中。