如何在Devexpress XPO上删除旧密钥后创建重复密钥?

时间:2014-10-31 10:53:59

标签: c# winforms linq devexpress xpo

这是我的产品类:

  public class Product : XPLiteObject
    {
       public string productId {get;set;}
    }

我使用Gridview来控制数据。 当我删除 productId =“id-5”;

的行时
gridview1.deleteSelectedRows();

然后使用 productId =“id-5”添加新行; (同样的id我被删除了)

最后我说了;

unitOfWork1.CommitChanges();

收到异常:找到了一个重复的钥匙!

1 个答案:

答案 0 :(得分:0)

看起来没有从数据库中删除相应的记录。有三个可能的原因:

  1. 如果GridView绑定到XPCollection,请确保XPCollection.DeleteObjectOnRemove属性设置为true。否则,GridView.DeleteSelectedRows方法仅从集合中删除对象;

  2. 如果GridView通过UnitOfWork绑定到XPCollection,则还需要在执行GridView.DeleteSelectedRows后执行UnitOfWork.CommitChanges方法。否则,您的更改将不会提交到数据库;

  3. 如果使用DeferredDeletionAttribute修饰Product类,则删除此对象将设置相应的布尔列值,但实际上不会从数据库中删除该记录。如果是这种情况,有四种方法可以解决问题: