2014-10-31 65 views
0

这是我的产品类别:如何在Devexpress XPO上删除旧密钥后创建双重密钥?

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

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

gridview1.deleteSelectedRows(); 

然后添加新行的productId = “ID-5”; (相同的ID我被删除)

最后我comit;

unitOfWork1.CommitChanges(); 

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

回答

0

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

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

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

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