0

这是我的产品类:

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

我使用 Gridview 来控制数据。当我使用productId = "id-5"删除一行时;

gridview1.deleteSelectedRows();

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

最后我承诺;

unitOfWork1.CommitChanges();

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

4

1 回答 1

0

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

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

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

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

于 2014-11-03T08:47:38.780 回答