Skip to content

Commit b7e3d6c

Browse files
committed
Started the 2.7 release post.
1 parent 032693b commit b7e3d6c

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# ABP Framework v2.7.0 Has Been Released!
2+
3+
The **ABP Framework** & and the **ABP Commercial** v2.7 have been released. We hadn't created blog post for the 2.4, 2.4 and 2.6 releases, so this post will also cover **what's new** with these releases and **what we've done** in the last 2 months.
4+
5+
## About the Release Cycle & Development
6+
7+
Reminding that we had started to release a new minor feature version **in every two weeks**, generally on Thursdays. Our goal is to deliver new features as soon as possible.
8+
9+
We've completed & merged hundreds of issues and pull requests with **1,300+ commits** in the last 7-8 weeks, only for the ABP Framework repository. Daily commit counts are constantly increasing:
10+
11+
![github-contribution-graph](github-contribution-graph.png)
12+
13+
ABP.IO Platform is rapidly growing and we are getting more and more contributions from the community.
14+
15+
## What's New?
16+
17+
In the last few releases, we've mostly focused on providing ways to extend existing modules when you use them as NuGet/NPM Packages. We've also added some useful features and some helpful guides.
18+
19+
### Object Extending System
20+
21+
The Object Extending System allows module developers to create extensible modules and allows application developers to customize and extend a module easily.
22+
23+
For example, you can add two extension properties to the user entity of the identity module:
24+
25+
````csharp
26+
ObjectExtensionManager.Instance
27+
.AddOrUpdate<IdentityUser>(options =>
28+
{
29+
options.AddOrUpdateProperty<string>("SocialSecurityNumber");
30+
options.AddOrUpdateProperty<bool>("IsSuperUser");
31+
}
32+
);
33+
````
34+
35+
It is easy to define validation rules for the properties:
36+
37+
````csharp
38+
ObjectExtensionManager.Instance
39+
.AddOrUpdateProperty<IdentityUserCreateDto, string>(
40+
"SocialSecurityNumber",
41+
options =>
42+
{
43+
options.Attributes.Add(new RequiredAttribute());
44+
options.Attributes.Add(
45+
new StringLengthAttribute(32) {
46+
MinimumLength = 6
47+
}
48+
);
49+
});
50+
````
51+
52+
You can even write custom code to validate the property. It automatically works for the objects those are parameters of an application service, controller or a page.
53+
54+
While extension properties of an entity are normally stored in a single JSON formatted field in the database table, you can easily configure to store a property as a table field using the EF Core mapping:
55+
56+
````csharp
57+
ObjectExtensionManager.Instance
58+
.AddOrUpdateProperty<IdentityUser, string>(
59+
"SocialSecurityNumber",
60+
options =>
61+
{
62+
options.MapEfCore(b => b.HasMaxLength(32));
63+
}
64+
);
65+
````
66+
67+
See the [Object Extensions document](https://docs.abp.io/en/abp/latest/Object-Extensions) for details about this system.
68+
69+
### Guide: Customizing the Existing Modules
70+
71+
[Customizing the Existing Modules guide](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Guide) explains all the ways of extending/customizing a reusable module including [entities](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities), [services](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Overriding-Services) and the [user interface](https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Overriding-User-Interface).
72+
73+
### Guide: EF Core Database Migrations
74+
75+
TODO
Loading

0 commit comments

Comments
 (0)