Skip to content

Releases: maliming/Abp.GeneralTree

add CreateChildrenAsync & update abp v3.5

21 Mar 02:41
fa69f94
Compare
Choose a tag to compare
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.

23 Jan 03:03
Compare
Choose a tag to compare
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

22 Jan 02:38
Compare
Choose a tag to compare
public interface IGeneralTreeDto<TTree, TPrimaryKey> : IEntityDto<TPrimaryKey>
	where TPrimaryKey : struct
{
	TPrimaryKey? ParentId { get; set; }

	ICollection<TTree> Children { get; set; }
}

Support for children ToTree.

20 Jan 14:51
Compare
Choose a tag to compare
[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

19 Jan 05:38
Compare
Choose a tag to compare
[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

27 Dec 12:02
Compare
Choose a tag to compare

Compatible with low version of abp(2.3.0)

27 Dec 07:52
Compare
Choose a tag to compare

Compatible with low version of abp(2.3.0)

FullName support custom Hyphen.

29 Nov 03:20
Compare
Choose a tag to compare

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

25 Nov 11:37
Compare
Choose a tag to compare

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

20 Nov 14:07
Compare
Choose a tag to compare

We need BulkCreateAsync to solve the performance issue of bulk additions.