我正在使用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仍会发送数据并保存所有内容,但异常对客户来说并不好。
如何解决此异常?
答案 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?