2014-10-31 109 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裝飾,則刪除此對象將設置相應的布爾列值,但實際上不會從數據庫中刪除該記錄。如果是這樣的話,有解決問題的四種方法: