Silverlight 4.0 为什么会出现EntityManagerSaveException?

Silverlight 4.0 为什么会出现EntityManagerSaveException?,silverlight-4.0,devforce,Silverlight 4.0,Devforce,我正在使用Silverlight 4和DevForce 6.1.11.0 我有一些实现EntityAspect的POCO类 通过EntityManager.SaveChanges保存更改时;DevForce不会将这些POCO实体保存到服务器,因为这些POCO实体不是EF的一部分 相反,我通过WebClient.UploadStringAsync将它们发送到Web服务 当我保存多个同一类型的实体时,这是可行的。然后我得到一个例外: EntityManagerSaveException:具有以下键的

我正在使用Silverlight 4和DevForce 6.1.11.0

我有一些实现EntityAspect的POCO类

通过EntityManager.SaveChanges保存更改时;DevForce不会将这些POCO实体保存到服务器,因为这些POCO实体不是EF的一部分

相反,我通过WebClient.UploadStringAsync将它们发送到Web服务

当我保存多个同一类型的实体时,这是可行的。然后我得到一个例外:

EntityManagerSaveException:具有以下键的实体:PocoryClass:0,0 此entityManager中已存在

我已经检查了缓存,没有具有该密钥的实体

WebClient.UploadStringAsync仍会发送数据,所有内容都会保存,但对于客户来说,异常情况并不好


如何解决此异常?

我遇到问题的poco实体应该只存在于客户端,而不是DevForce服务器上。原因是只有客户端可以在本地网络上访问这些

因此,我使用WebClient.OpenReadAsync在客户端读取数据并创建poco实体。然后在保存poco实体时使用WebClient.UploadStringAsync

创建poco实体并将其添加到entitymanager时,我会这样做:

var pocoEntity = new PocoMyClass();
pocoEntity.keyId = some integer;
…
entityManager.AddEntity(pocoEntity);
pocoEntity.EntityAspect.AcceptChanges();
完成此操作后,我看到poco实体的EntityVersion.Original的属性只包含空的NULL和zero

这是保存时出现异常的原因吗


当实体不是来自DevForce服务器时,如何操作EntityVersion.Original

您使用的PocoSaveMode设置是什么?查看是否缺少DevForce所需的任何内容。我不会将PocoSaveMode设置为任何内容。我在DevForce服务器上有一个PocoSaveAdapter和一个PocoServiceProvider,它们用于某些poco类型。我遇到问题的poco类型不应该转到DevForce服务器。到DevForce服务器的往返是否会导致这些poco类型的异常?理论上,DevForce不应该向服务器发送实体状态不变的实体,但DF会执行各种缓存克隆/处理,并且在克隆或将保存结果后处理到EM缓存时可能会引发错误。如果您可以获得包含内部异常信息的堆栈跟踪,这可能有助于查明问题。如果没有,并且您是授权的DevForce客户,您可以向iDeaBrade支持发送一个小的复制示例。问题是这些实体已更改,但我不希望将它们发送回get server。EM缓存中更改的实体将自动发送到服务器。为了避免这种情况,您可以只导入应该保存到另一个EM中的更改,并在该EM上调用save。