Releases: maliming/Abp.GeneralTree
Releases · maliming/Abp.GeneralTree
add CreateChildrenAsync & update abp v3.5
var beijing = new Region
{
Name = "beijing"
};
await _generalRegionTreeManager.CreateAsync(beijing);
var xicheng = new Region
{
Name = "xicheng",
ParentId = beijing.Id
};
var dongcheng = new Region
{
Name = "dongcheng",
ParentId = beijing.Id
};
await _generalRegionTreeManager.CreateChildrenAsync(beijing, new List<Region>
{
xicheng,
dongcheng
});
GeneralTree update & move methods to increase the processing of sub-items.
await _generalTreeManager.UpdateAsync(tree, x =>
{
x.MyCustomData = x.Code;
});
await _generalRegionTreeManager.MoveAsync(tree.Id, newTree.Id, x =>
{
x.MyCustomData = x.Code;
});
add IGeneralTreeDto ToTree Extensions
public interface IGeneralTreeDto<TTree, TPrimaryKey> : IEntityDto<TPrimaryKey>
where TPrimaryKey : struct
{
TPrimaryKey? ParentId { get; set; }
ICollection<TTree> Children { get; set; }
}
Support for children ToTree.
[Fact]
public void ToTree_Children_Test()
{
var regions = new List<Regin>
{
new Regin
{
Id = 1,
Name = "北京",
ParentId = 8888
},
new Regin
{
Id = 2,
Name = "东城区",
ParentId = 1
},
new Regin
{
Id = 3,
Name = "西城区",
ParentId = 1
},
new Regin
{
Id = 4,
Name = "河北",
ParentId = 9999
},
new Regin
{
Id = 5,
Name = "石家庄",
ParentId = 4
},
new Regin
{
Id = 6,
Name = "承德",
ParentId = 4
},
new Regin
{
Id = 7,
Name = "双桥区",
ParentId = 6
}
};
var tree = regions.ToTree<Regin, long>().ToList();
tree.ShouldNotBeNull();
tree.Count.ShouldBe(2);
tree.First().Children.Count.ShouldBe(2);
tree.Last().Children.Count.ShouldBe(2);
tree.Last().Children.Last().Children.Count.ShouldBe(1);
}
Add an extension to transform a collection into a tree entity
[Fact]
public void ToTree_Test()
{
var regions = new List<Regin>
{
new Regin
{
Id = 1,
Name = "北京",
},
new Regin
{
Id = 2,
Name = "东城区",
ParentId = 1
},
new Regin
{
Id = 3,
Name = "西城区",
ParentId = 1
},
new Regin
{
Id = 4,
Name = "河北",
},
new Regin
{
Id = 5,
Name = "石家庄",
ParentId = 4
},
new Regin
{
Id = 6,
Name = "承德",
ParentId = 4
},
new Regin
{
Id = 7,
Name = "双桥区",
ParentId = 6
}
};
var tree = regions.ToTree<Regin, long>().ToList();
tree.ShouldNotBeNull();
tree.Count.ShouldBe(2);
tree.First().Children.Count.ShouldBe(2);
tree.Last().Children.Count.ShouldBe(2);
tree.Last().Children.Last().Children.Count.ShouldBe(1);
}
Public Fill Up Tree method
- Public Fill Up Tree method
For the convenience of some people want to use third-party libraries.
such as: http://entityframework-extensions.net/overview - Update abp to v3.3.0
Compatible with low version of abp(2.3.0)
Compatible with low version of abp(2.3.0)
FullName support custom Hyphen.
FullName support custom Hyphen.
public GeneralTreeConfiguration()
{
ExceptionMessageFactory = tree =>
$"There is already an tree with name {tree.Name}. Two tree with same name can not be created in same level.";
Hyphen = "-";
}
ExceptionMessageFactory
Support for custom exception message: ExceptionMessageFactory
public GeneralTreeConfiguration()
{
ExceptionMessageFactory = tree =>
$"There is already an tree with name {tree.Name}. Two tree with same name can not be created in same level.";
}
BulkCreateAsync
We need BulkCreateAsync to solve the performance issue of bulk additions.