为什么这个EntityManagerSaveException?

时间:2015-01-30 16:41:26

标签: silverlight-4.0 devforce

我正在使用Silverlight 4和DevForce 6.1.11.0

我有一些实现EntityAspect的POCO类。

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

而是通过WebClient.UploadStringAsync将它们发送到Web服务。

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

  

EntityManagerSaveException:具有此键的实体:PocoMyClass:0,0   已存在于此entityManager

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

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

如何解决此异常?

1 个答案:

答案 0 :(得分:0)

我遇到问题的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和零)。

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

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