Breeze 保存后查询中的实体双精度

Breeze 保存后查询中的实体双精度,breeze,Breeze,我正在使用Breeze创建一个动态数据编辑网格。在向管理器添加新实体、编辑属性、将其保存到WebAPI服务并进行本地查询之后,我两次获得相同的实体。一个实体的entitystate中服务器生成的密钥保持不变,另一个实体的primarykey-1和entitystate已添加 真的不知道我做错了什么或者不理解微风背后的机制 注意 我正在使用一个自定义contextprovider,并覆盖savechanges方法。我在keymap中返回实体类型realvalue(DB生成的键)、tempvalue

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

真的不知道我做错了什么或者不理解微风背后的机制

注意

我正在使用一个自定义contextprovider,并覆盖savechanges方法。我在keymap中返回实体类型realvalue(DB生成的键)、tempvalue(Breeze分配的键,例如-1)

编辑


我解决了这个问题。我的自定义contextprovider中有一个bug。我忘记了将生成的keymap实际添加到savechangescore方法的结果中。

首先要检查的是您是否使用临时键(即-1)保存实体

如果是这种情况(您显然不希望这样),那么该entityType的元数据中可能没有正确的“AutoGeneratedKeyType”。您可以通过调用MetadataStore.getEntityType方法并检查元数据来检查这一点


如果不是这样,请将代码发布到您的自定义contextprovider

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

嘿,我检查了元数据。我拥有名为“Identity”的autoGeneratedKeyType属性。我假设这意味着breeze知道密钥是由数据库生成的??PS,我没有覆盖实体框架上下文提供程序的元数据方法OK,因为元数据看起来很好,而且因为我无法重新处理您的问题,我猜这与您的自定义上下文提供程序有关。因此,请继续发送电子邮件给我(Jay Traband),地址为breeze@ideablade.com使用您的contextProvider的源代码(或在此处发布)。另外,在没有自定义contextProvider的情况下尝试您的代码,看看问题是否解决了。您是否自己将客户机上的id设置为-1?你不应该。Breeze只有在默认值(0)下启动时才会生成临时密钥。让Breeze为您生成该密钥(或者您可以覆盖客户端密钥生成器…但是为什么要麻烦呢?)。听说您自己在服务器上管理密钥映射,我也很惊讶。为什么呢?你可能有一个很好的理由,但这很奇怪。不,我没有在客户机上设置任何id。生成-1。