76 lines
1.8 KiB
Markdown
76 lines
1.8 KiB
Markdown
# Solution Structure
|
|
|
|
Create a modular .NET solution with proper layer separation.
|
|
|
|
## Create Solution
|
|
|
|
```bash
|
|
mkdir OrderManagement
|
|
cd OrderManagement
|
|
|
|
# Create solution file
|
|
dotnet new sln -n OrderManagement
|
|
|
|
# Create projects
|
|
dotnet new webapi -n OrderManagement.Api
|
|
dotnet new classlib -n OrderManagement.CQRS
|
|
dotnet new classlib -n OrderManagement.Domain
|
|
dotnet new classlib -n OrderManagement.Infrastructure
|
|
dotnet new xunit -n OrderManagement.Tests
|
|
|
|
# Add to solution
|
|
dotnet sln add OrderManagement.Api
|
|
dotnet sln add OrderManagement.CQRS
|
|
dotnet sln add OrderManagement.Domain
|
|
dotnet sln add OrderManagement.Infrastructure
|
|
dotnet sln add OrderManagement.Tests
|
|
```
|
|
|
|
## Project Dependencies
|
|
|
|
```bash
|
|
# Api depends on CQRS and Infrastructure
|
|
cd OrderManagement.Api
|
|
dotnet add reference ../OrderManagement.CQRS
|
|
dotnet add reference ../OrderManagement.Infrastructure
|
|
|
|
# CQRS depends on Domain
|
|
cd ../OrderManagement.CQRS
|
|
dotnet add reference ../OrderManagement.Domain
|
|
|
|
# Infrastructure depends on Domain
|
|
cd ../OrderManagement.Infrastructure
|
|
dotnet add reference ../OrderManagement.Domain
|
|
|
|
# Tests depend on all
|
|
cd ../OrderManagement.Tests
|
|
dotnet add reference ../OrderManagement.Api
|
|
dotnet add reference ../OrderManagement.CQRS
|
|
dotnet add reference ../OrderManagement.Domain
|
|
dotnet add reference ../OrderManagement.Infrastructure
|
|
```
|
|
|
|
## Add NuGet Packages
|
|
|
|
```bash
|
|
# Api
|
|
cd OrderManagement.Api
|
|
dotnet add package Svrnty.CQRS.MinimalApi
|
|
dotnet add package Svrnty.CQRS.Grpc
|
|
|
|
# CQRS
|
|
cd ../OrderManagement.CQRS
|
|
dotnet add package Svrnty.CQRS
|
|
dotnet add package Svrnty.CQRS.FluentValidation
|
|
dotnet add package FluentValidation
|
|
|
|
# Infrastructure
|
|
cd ../OrderManagement.Infrastructure
|
|
dotnet add package Microsoft.EntityFrameworkCore
|
|
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
Continue to [Domain Layer](02-domain-layer.md)
|