Skip to content

Commit

Permalink
Documentation updates.
Browse files Browse the repository at this point in the history
  • Loading branch information
chullybun committed Feb 26, 2024
1 parent 6e3d25b commit 500c274
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 10 deletions.
3 changes: 2 additions & 1 deletion Beef.sln
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{FDBFD331-A
docs\Layer-ServiceInterface.md = docs\Layer-ServiceInterface.md
docs\Reference-Data.md = docs\Reference-Data.md
docs\Sample-Cosmos-GettingStarted.md = docs\Sample-Cosmos-GettingStarted.md
docs\Sample-Postgres-EF-GettingStarted.md = docs\Sample-Postgres-EF-GettingStarted.md
docs\Sample-SqlServer-EF-GettingStarted.md = docs\Sample-SqlServer-EF-GettingStarted.md
docs\Sample-SqlServer-StoredProcs-GettingStarted.md = docs\Sample-SqlServer-StoredProcs-GettingStarted.md
docs\Solution-Structure.md = docs\Solution-Structure.md
Expand All @@ -201,7 +202,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyEf.Hr.Security.Subscripti
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MyEf.Hr.Security.Test", "samples\MyEf.Hr\MyEf.Hr.Security.Test\MyEf.Hr.Security.Test.csproj", "{7AE6E1D4-8621-4FC5-8A1F-448FA70DB257}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Beef.Database.Postgres", "tools\Beef.Database.Postgres\Beef.Database.Postgres.csproj", "{1FC9C576-99C9-44B2-AD86-9B8A0C76D79E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Beef.Database.Postgres", "tools\Beef.Database.Postgres\Beef.Database.Postgres.csproj", "{1FC9C576-99C9-44B2-AD86-9B8A0C76D79E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,10 @@ _Beef_ is open source under the [MIT license](./LICENSE) and is free for commerc
To start using _Beef_ you do not need to clone or fork the repo; you just need to create a solution with the underlying projects using the prescribed [solution structure](./docs/Solution-Structure.md), including referencing the appropriate [NuGet packages](#Framework). To accelerate this a .NET Core [template capability](./templates/Beef.Template.Solution/README.md) is provided to enable you to get up and running in minutes.

See the following for example end-to-end solution/project creation; each demonstrating the same API functionality leveraging different data sources to accomplish:
- [Cosmos sample](./docs/Sample-Cosmos-GettingStarted.md)
- [SQL Server Stored Procedures sample](./docs/Sample-SqlServer-StoredProcs-GettingStarted.md)
- [SQL Server Entity Framework sample](./docs/Sample-SqlServer-EF-GettingStarted.md)
- [_Cosmos_ sample](./docs/Sample-Cosmos-GettingStarted.md)
- [_PostgreSQL_ Entity Framework sample](./docs/Sample-Postgres-EF-GettingStarted.md)
- [_SQL Server_ Entity Framework sample](./docs/Sample-SqlServer-EF-GettingStarted.md)
- [_SQL Server_ Stored Procedures sample](./docs/Sample-SqlServer-StoredProcs-GettingStarted.md)

Otherwise, follow along with the following sample tutorials that will provide a more in-depth walkthrough solving a defined functional problem:

Expand Down
111 changes: 111 additions & 0 deletions docs/Sample-Postgres-EF-GettingStarted.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Getting started

This tutorial will demonstrate how to get a .NET Solution using _Beef_ created on your machine connecting to [PostgreSQL](https://www.postgresql.org/) using [Entity Framework](https://docs.microsoft.com/en-us/ef/core/) for data access. A pre-configured soluion will be created to enable, and demonstrate, the key end-to-end capabilities.

<br/>

## Prerequisites

The following need to be installed locally for the sample to run:

- Download and install the **Microsoft SQL Server Developer edition**: https://www.microsoft.com/en-us/sql-server/sql-server-downloads

It is recommended that the following is installed to simplify the opening of a command line from Visual Studio:
- Download and install the **Open Command Line** extension for Visual Studio: http://vsixgallery.com/extension/f4ab1e64-5d35-4f06-bad9-bf414f4b3bbb/. The use of `Alt+Space` will open a command line (or PowerShell) in the directory of the open file.

<br/>

## Beef Template Solution

The [`Beef.Template.Solution`](../templates/Beef.Template.Solution/README.md) needs to be installed so that it can be used to easily create the required [solution structure](./Solution-Structure.md).

Install (or update) the latest template from the public [NuGet](https://www.nuget.org/packages/Beef.Template.Solution/) repository using the [`dotnet new install`](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-new-install) or `dotnet new -i` ([deprecated](https://github.com/dotnet/docs/issues/32195)) command as follows (or alternatively specify the required version):

```
dotnet new install beef.template.solution --nuget-source https://api.nuget.org/v3/index.json
dotnet new install beef.template.solution::5.0.1.preview7 --nuget-source https://api.nuget.org/v3/index.json
```

<br/>

## Create solution

To create the _Solution_ you must first be in the directory that you intend to create the artefacts within. The _beef_ template requires the `company` and `appname`; which is also the recommended directory name (it will also represent the .NET namespace). For this tutorial we will also choose the `Postgres` data source.

```
mkdir Foo.Bar
cd Foo.Bar
dotnet new beef --company Foo --appname Bar --datasource Postgres
```

The solution should now have been created; and the file system should look like the following:

```
└── Foo.Bar
└── Foo.Bar.Api # API end-point and operations
└── Foo.Bar.Business # Core business logic components
└── Foo.Bar.CodeGen # Entity and Reference Data code generation console
└── Foo.Bar.Database # Database setup and configuration
└── Foo.Bar.Common # Common / shared components
└── Foo.Bar.Test # Unit and intra-integration tests
└── Foo.Bar.sln # Solution file that references all above projects
```

<br/>

## Code-generation

The solution has been created with a sample `Person` entity defined and related [reference data](./Reference-Data.md) to demonstrate the code generation configuration. There are other `Person` related classes within the solution to demonstrate the corresponding non-generated interactions, as well as the [intra-integration testing](../tools/Beef.Test.NUnit/README.md).

The [code-generation](../tools/Beef.CodeGen.Core/README.md) will reference the following configuration within the `Foo.Bar.CodeGen` directory:
- `entity.beef-5.yaml` - contains the entity(s) configuration.
- `refdata.beef-5.yaml` - contains the reference data configuration.

Generate the configured entities and reference data by performing the following:

```
cd Foo.Bar.CodeGen
dotnet run all
```

This will build and run the `Foo.Bar.CodeGen` console; the outcome of the code generation will be logged to the console showing what was added or updated.

<br/>

## Database generation and configuration

The solution has been created with the sample `Person` table defined and related reference data tables, migration scripts to create the database objects.

The [database generation](../tools/Beef.Database.Core/README.md) will reference the following configuration within the `Foo.Bar.Database` directory:
- `database.beef-5.yaml` - contains the table(s) and related C# model configuration.

Generate the configured tables and C# models by performing the following:

```
cd Foo.Bar.Database
dotnet run all
```

This will build and run the `Foo.Bar.Database` console; the outcome of the code generation and database setup/configuration will be logged to the console showing what was added or updated.

<br/>

## Testing

To verify that the generated APIs function as expected an example set of tests has been created to exercise the GET/PUT/POST/PATCH/DELETE operations:

```
cd ..\Foo.Bar.Test
dotnet test Foo.Bar.Test.csproj
```

<br/>

## Visual Studio

Open the solution within Visual Studio:

```
cd ..
Foo.Bar.sln
```
7 changes: 4 additions & 3 deletions templates/Beef.Template.Solution/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ For more information see: [data-generation](../../tools/Beef.Database.Core/READM
## Samples

See the following samples for end-to-end usage:
- [SQL Server Entity Framework sample](../../docs/Sample-SqlServer-EF-GettingStarted.md)
- [SQL Server Stored Procedure sample](../../docs/Sample-SqlServer-StoredProcs-GettingStarted.md)
- [Cosmos sample](../../docs/Sample-Cosmos-GettingStarted.md)
- [_Cosmos_ sample](../../docs/Sample-Cosmos-GettingStarted.md)
- [_PostgreSQL_ Entity Framework sample](../../docs/Sample-Postgres-EF-GettingStarted.md)
- [_SQL Server_ Entity Framework sample](../../docs/Sample-SqlServer-EF-GettingStarted.md)
- [_SQL Server_ Stored Procedure sample](../../docs/Sample-SqlServer-StoredProcs-GettingStarted.md)
11 changes: 9 additions & 2 deletions tools/Beef.CodeGen.Core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,13 @@ Command | Description
Additionally, there are a number of command line options that can be used.

```
Business Entity Execution Framework (Beef) Code Generator tool.
Beef.CodeGen.Core Code Generation Tool.
Usage: Beef.CodeGen.Core [options] <command>
Arguments:
command Execution command type.
Allowed values are: Entity, Database, RefData, DataModel, All.
Allowed values are: Entity, Database, RefData, DataModel, All, Clean, Count.
Options:
-?|-h|--help Show help information.
Expand All @@ -179,6 +179,13 @@ Options:
-cv|--connection-varname Database connection string environment variable name.
-enc|--expect-no-changes Indicates to expect _no_ changes in the artefact output (e.g. error within build pipeline).
-sim|--simulation Indicates whether the code-generation is a simulation (i.e. does not create/update any artefacts).
Extended commands and argument(s):
clean Cleans (removes) all related directories named 'Generated'.
- Use --param exclude=name[,name] to exclude named directory(s) from the clean.
count Counts and reports the number of files and lines (All and Generated) within all related directories.
- Use --param exclude=name[,name] to exclude named directory(s) from the count.
```

<br/>
Expand Down
3 changes: 2 additions & 1 deletion tools/Beef.Database.Core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ The primary/core capabilities are enabled by [`DbEx`](https://github.com/Avanade

Depending on the underlying database provider specific capabilities are enabled; see:

- [SQL Server](../Beef.Database.SqlServer)
- [MySQL](../Beef.Database.MySql)
- [Postgres](../Beef.Database.Postgres)
- [SQL Server](../Beef.Database.SqlServer)

</br>

Expand Down

0 comments on commit 500c274

Please sign in to comment.