Browse Source

Complete part-2 for bookstore with suite tutorial

pull/21501/head
EngincanV 2 years ago
parent
commit
164e90157b
  1. 18
      docs/en/docs-nav.json
  2. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/abp-suite-opening.png
  3. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/studio-browser-suite.png
  4. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-1.png
  5. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-2.png
  6. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-3.png
  7. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-4.png
  8. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-5.png
  9. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-6.png
  10. BIN
      docs/en/tutorials/book-store-with-abp-suite/images/suite-book-pages-1.png
  11. 8
      docs/en/tutorials/book-store-with-abp-suite/index.md
  12. 12
      docs/en/tutorials/book-store-with-abp-suite/part-01.md
  13. 106
      docs/en/tutorials/book-store-with-abp-suite/part-02.md

18
docs/en/docs-nav.json

@ -125,7 +125,23 @@
{
"text": "1: Creating the Solution",
"path": "tutorials/book-store-with-abp-suite/part-01.md"
}
},
{
"text": "2: Creating the Books",
"path": "tutorials/book-store-with-abp-suite/part-02.md"
},
{
"text": "3: Creating the Authors",
"path": "tutorials/book-store-with-abp-suite/part-03.md"
},
{
"text": "4: Book to Author Relation",
"path": "tutorials/book-store-with-abp-suite/part-04.md"
},
{
"text": "5: Customizing the Generated Code",
"path": "tutorials/book-store-with-abp-suite/part-05.md"
}
]
},
{

BIN
docs/en/tutorials/book-store-with-abp-suite/images/abp-suite-opening.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/studio-browser-suite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-entity-6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/en/tutorials/book-store-with-abp-suite/images/suite-book-pages-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

8
docs/en/tutorials/book-store-with-abp-suite/index.md

@ -16,12 +16,12 @@
}
````
> This tutorial is suitable for those who have an ABP Team or a higher [license](https://abp.io/pricing).
## About This Tutorial
> In this tutorial, you will use the [ABP Suite](../../suite/index.md) to generate everything you need to build the **BookStore** application, such as [*Entities*](../../framework/architecture/domain-driven-design/entities.md), [*Domain Services*](../../framework/architecture/domain-driven-design/domain-services.md), [*Application Services*](../../framework/architecture/domain-driven-design/application-services.md), *CRUD pages* and more...
> You must have an **ABP Team** or a higher license to use the ABP Suite.
In this tutorial series, you will build an ABP based web application named `Acme.BookStore`. This application is used to manage a list of books and their authors. It is developed using the following technologies:
* **{{DB_Value}}** as the database provider.
@ -29,7 +29,7 @@ In this tutorial series, you will build an ABP based web application named `Acme
This tutorial is organized as the following parts:
- [Part 1: Creating the Solution](part-01.md),
- [Part 1: Creating the Solution](part-01.md)
- [Part 2: Creating the Books](part-02.md)
- [Part 3: Creating the Authors](part-03.md)
- [Part 4: Book to Author Relation](part-04.md)
@ -37,4 +37,4 @@ This tutorial is organized as the following parts:
### Download the Source Code
//TODO: create the sample application in the abp-commercial-samples repository and place the links here!!!
After logging in to the ABP website, you can download the source code from [here](https://abp.io/api/download/samples/suite-bookstore-mvc-ef).

12
docs/en/tutorials/book-store-with-abp-suite/part-01.md

@ -16,20 +16,24 @@
}
````
Before starting the development, create a new solution named `Acme.BookStore` and run it by following the [getting started tutorial](../../get-started/layered-web-application.md)
Before starting the development, create a new solution named `Acme.BookStore` and run it by following the [getting started tutorial](../../get-started/layered-web-application.md).
You can use the following configurations:
* **Solution Name:** `Acme.BookStore`
* **UI Framework:** {{if UI=="MVC}} ASP.NET Core MVC / Razor Pages {{end}}
* **UI Theme:** LeptonX
* **Mobile Framwork:** None
* **Mobile Framework:** None
* **Database Provider:** {{if DB=="EF"}} Entity Framework Core {{end}}
You can select the other options based on your preference.
> **Please complete the [Get Stared](../../get-started/layered-web-application.md) guide and run the web application before going further.**
> **Please complete the [Get Started](../../get-started/layered-web-application.md) guide and run the web application before going further.**
The initial solution structure should be like the following in the ABP Studio's [Solution Explorer](../../studio/solution-explorer.md):
![](./images/book-store-suite-solution-explorer.png)
![](./images/book-store-suite-solution-explorer.png)
## Summary
We've created the initial layered monolith solution. In the next part, we will learn how to create entities, and generate CRUD pages based on the specified options (including tests, UI, customizable code support etc.) with [ABP Suite](../../suite/index.md).

106
docs/en/tutorials/book-store-with-abp-suite/part-02.md

@ -0,0 +1,106 @@
# Web Application Development (with ABP Suite) Tutorial - Part 2: Creating the Books
````json
//[doc-params]
{
"UI": ["MVC"],
"DB": ["EF"]
}
````
````json
//[doc-nav]
{
"Previous": {
"Name": "Creating the Solution",
"Path": "tutorials/book-store-with-abp-suite/part-01"
},
"Next": {
"Name": "Creating the Authors",
"Path": "tutorials/book-store-with-abp-suite/part-03"
}
}
````
In this part, you will create a new entity named `Book` and generate CRUD pages for the related entities with everything that you would normally implement manually (including application services, tests, CRUD pages, database relations and more...) via [ABP Suite](../../suite/index.md) with few clicks.
## Opening the ABP Suite
After creating our solution in the previous part, now we can open the ABP Suite and start generating CRUD pages. You can select the *ABP Suite -> Open* command on the main menu to open ABP Suite:
![opening the ABP Suite](./images/abp-suite-opening.png)
After clicking the related command, pre-integrated browser of ABP Studio should be opened, then we can start generating entities and all related codes with a few configurations:
![](./images/studio-browser-suite.png)
## Creating the Book Entity
Let's create a `Book` entity with some properties. First, type `Book` for the *Name* field and leave the other options as is. ABP Suite automatically calculates proper values for the rest of the inputs for you:
![](./images/suite-book-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...
Let's change the menu-item value as **book** to show a proper icon in the generated UI, and also enable **code customization**, **creating unit & integration tests**, and other options as you wish:
![](./images/suite-book-entity-2.png)
After, specifying the entity metadata, open the *Properties* tab and create the properties shown in the following figure:
![](./images/suite-book-entity-3.png)
Here the details:
* `Name` is **required**, it's a **string** property and maximum length is **128**.
* `Type` is an **enum** and the enum file path is *\Acme.BookStore.Domain.Shared\Books\BookType.cs* (we will create the file, in the next section).
* `PublishDate` is a **DateTime** property and **not nullable**.
* `Price` is a **float** property and **required**.
You can leave the other configurations as default.
> ABP Suite allows you to define properties with a great range of options, for example, you can specify the property type as *string*, *int*, *float*, *Guid*, *DateTime*, and even *File* (for file upload) and also you can set any options by building up your properties, such as specifying it as *required*, or *nullable*, setting *max-min length*, *default value* and more...
While defining the properties, we defined a *Type* property with the type of *enum*. ABP Suite asks for an enum path to read the enum file, and set the namespace, and enum name in the generated code.
For that purpose, we should create a `BookType` enum in the `Acme.BookStore.Domain.Shared` project under the **Books** folder as follows:
```csharp
namespace Acme.BookStore.Books;
public enum BookType
{
Undefined,
Adventure,
Biography,
Dystopia,
Fantastic,
Horror,
Science,
ScienceFiction,
Poetry
}
```
Then, you can specify the enum path for the `Type` property in ABP Suite like in the following figure:
![](./images/suite-book-entity-4.png)
After that, 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. You can see the Books page in the following figure with a single record:
![](./images/suite-book-pages-1.png)
## Summary
In this part, we've created a new entity named `Book` 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**.
Loading…
Cancel
Save