dotnet-cqrs/docs/tutorials/modular-solution/01-solution-structure.md

1.8 KiB

Solution Structure

Create a modular .NET solution with proper layer separation.

Create Solution

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

# 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

# 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