我的域对象:

public class MyDomainObject
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public int DisplayOrder { get; set; }
}


假设样本数据:

var list = new List<MyDomainObject>()
               {
                   new MyDomainObject {Name = "Element1", DisplayOrder = 0},
                   new MyDomainObject {Name = "Element2", DisplayOrder = 1},
                   new MyDomainObject {Name = "Element3", DisplayOrder = 2},
                   new MyDomainObject {Name = "Element4", DisplayOrder = 3},
               };


现在,我将“ Element3”的DisplayOrder从2更改为1。我的列表应如下所示:


Element1(DisplayOrder = 0)
Element3(DisplayOrder = 1)
Element2(DisplayOrder = 2)
Element4(DisplayOrder = 3)


现在我删除“ Element3”


Element1(DisplayOrder = 0)
Element2(DisplayOrder = 1)
Element4(DisplayOrder = 2)


那么,将这种机制持久保存到数据库的最佳方法是什么?

基本上,我需要一个“ ReOrderableCollection”,它将从数据库中使用OrderBy“ DisplayOrder”填充集合索引匹配“ DisplayOrder”的对象,并通过从Collection Index分配DisplayOrder来保留项目。

最佳答案

我在这里回答了先前/类似的关于重新排序的问题:
How to design table that can be re-sequenced?

这很好地完成了订单的保存工作。根据列表的大小,重新保存订单可能是一个完全可行的选择,对于长列表而言,Mark Byers的想法看起来非常不错。

关于c# - 实现“ReOrderable集合”并将其持久化到数据库的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1995770/

10-11 12:15