diff --git a/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-1.png b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-1.png new file mode 100644 index 0000000000..bfbd5978d5 Binary files /dev/null and b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-1.png differ diff --git a/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-2.png b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-2.png new file mode 100644 index 0000000000..941893e6ed Binary files /dev/null and b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-entity-2.png differ diff --git a/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-new-entity.png b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-new-entity.png new file mode 100644 index 0000000000..a58088a838 Binary files /dev/null and b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-new-entity.png differ diff --git a/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-pages-1.png b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-pages-1.png new file mode 100644 index 0000000000..54732baba4 Binary files /dev/null and b/docs/en/tutorials/book-store-with-abp-suite/images/suite-author-pages-1.png differ diff --git a/docs/en/tutorials/book-store-with-abp-suite/part-03.md b/docs/en/tutorials/book-store-with-abp-suite/part-03.md new file mode 100644 index 0000000000..07d1a7dcf2 --- /dev/null +++ b/docs/en/tutorials/book-store-with-abp-suite/part-03.md @@ -0,0 +1,79 @@ +# Web Application Development (with ABP Suite) Tutorial - Part 3: Creating the Authors +````json +//[doc-params] +{ + "UI": ["MVC"], + "DB": ["EF"] +} +```` +````json +//[doc-nav] +{ + "Previous": { + "Name": "Creating the Books", + "Path": "tutorials/book-store-with-abp-suite/part-02" + }, + "Next": { + "Name": "Book to Author Relation", + "Path": "tutorials/book-store-with-abp-suite/part-04" + } +} +```` + +In the previous part, you have created the `Book` entity and in this part, you will create a new entity named `Author` and generate all necesssary code via [ABP Suite](../../suite/index.md) with few clicks. After creating the `Author` entity, you will be establishing [one-to-many relationship](../../suite/generating-crud-page.md#step-by-step-creating-a-navigation-property-with-1-to-many-relationship) with *Book* and *Author* entities, in the next part. + +## Creating the Author Entity + +After generating the all necessary code for the `Book` entity, and testing the *Books* page, by building & starting the application, now you can continue with creating the `Author` entity. + +> Before, creating the `Author` entity, please **stop the application** in ABP Studio's *Solution Runner* panel, because ABP Suite will make changes in the solution and it might need to build the solution in some steps and running the solution prevents to build it. + +Click the entity selection box in the top right of the *CRUD page generation* page, and select the *-New entity-*: + +![](/images/suite-author-new-entity.png) + +Then, you can type `Author` for the *Name* field and leave the other options as is (you can change the menu icon as **pen**, if you wish). ABP Suite automatically calculates proper values for the rest of the inputs for you: + +![](/images/suite-author-entity-1.png) + +ABP Suite sets: + +* Entity type as **master** (ABP Suite allows you to establish [master-child relationship](../../suite/creating-master-detail-relationship.md)), +* Base class as **FullAuditedAggregateRoot** ([see other possible values](../../framework/architecture/domain-driven-design/entities.md)), +* Primary key type as **Guid**, +* Plural name, database name, namespace, page title, menu item and more... +* Also, it enables **code customization**, **UI code generation**, **unit & integration test generation** and **bulk delete** by default. + +After, specifying the entity metadata, open the *Properties* tab and create the properties shown in the following figure: + +![](./images/suite-author-entity-2.png) + +Here the details: + +* `Name` is **required**, it's a **string** property, and it's a **textarea**. Minimum length is **2** and maximum length is **128**. +* `BirthDate` is a **DateTime** property and **not nullable**. +* `ShortBio` is a **string** property, it's **required**, maximum length is **256**. + +You can leave the other configurations as default. + +> **Note:** All properties are marked as **filterable** by default, and they appear in the advanced filter section because of that. You can set any properties you want as **not filterable** and then the related property will be removed from the advanced filter section and code will be generated accordingly. + +You can click the **Save and Generate** button to start the code generation process: + +![](./images/suite-book-entity-5.png) + +ABP Suite will generate the necessary code for you. It will take some time to complete the process. After the process is completed, you will see a success message, you can click the *Ok* button, and build & start the application by clicking the *Run -> Build & Start* button in the *Solution Runner* panel: + +![](./images/suite-book-entity-6.png) + +After the application is started, you can right-click and *Browse* on the application to open it in the ABP Studio's pre-integrated browser and try to add a new author: + +![](./images/suite-author-pages-1.png) + +## Summary + +In this part, we've created a new entity named `Author` and generated the necessary code for it with [ABP Suite](../../suite/index.md) within a few clicks. ABP Suite generated the all code for us, including the **entity**, **application service**, **database relations**, **unit & integration tests**, **UI** and **defined the custom hooks for code customization**. + +So far, we have created the `Book` (in the previous part) and `Author` entities (& generated code for all functionalities) for the book store application. However, currently there is no relation between these entities. + +In the next part, we will establish [one-to-many relation](../../suite/generating-crud-page.md) between these two entities. \ No newline at end of file