# Entity Framework - Dead Ball Zone This is a practice project to learn Entity Framework. Using the 1998 game [Dead Ball Zone](https://en.wikipedia.org/wiki/Dead_Ball_Zone) for inspiration. ## .NET commands: ### NuGet commands Install [Entity Framework Core NuGet package](https://www.nuget.org/packages/microsoft.entityframeworkcore): `dotnet add package Microsoft.EntityFrameworkCore --version 9.0.3` ### Creation commands To list all available templates: `dotnet new -l` New class: `dotnet new class -n MyClass` adding to an existing solution: `dotnet sln add Data/Data.csproj` ### Entity Framework commands Create a migration, inside of the Console project, referring to the Data project: `dotnet ef migrations add InitialMigration --startup-project ./ --project ../EntityFrameworkCore.Data` Update the database: `dotnet ef database update --startup-project ./ --project ../EntityFrameworkCore.Data` Database-first scaffolding example: *(no need for escape slashes)* `Scaffold-DbContext 'connection-string' Microsoft.EntityFrameworkCore.SqlServer -ContextDir ScaffoldDbContext -OutputDir ScallfoldModels` `dotnet ef dbcontext scaffold "connection-string" Microsoft.EntityFrameworkCore.SqlServer --context-dir ScaffoldDbContext --output-dir ScaffoldModels --startup-project ./ --project ..\EntityFrameworkCore.Data\` Using `-force` parameter to force overrides when scaffolding. ## Links * [Entity Framework - Database providers](https://learn.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli) ## Terms A **database-context** is an abstraction of the database structure in code. * It lists the models and their database table names. * It instantiates a database connection during the runtime of the application. * Allows configurations to be made in code. The **migrations** provide a version-controlled method to maintain the state of the database. * It is possible to track when, and by who changes were made. * In the Up method, it is described which changes should be made. * in the Down method, it is described which changes should be undone. This allows rollback. * There is a history table that is kept by default to track migrations. ## Installed NuGet packages A list of installed NuGet packages in this application. Note that the [Microsoft.EntityFrameworkCore.Tools](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/9.0.3) is used for Powershell commands used in the Package Manager Console for Visual Studio and that [Microsoft.EntityFrameworkCore.Design](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Design/9.0.3) is used for cross-platform command tools. ### Console project [Microsoft.EntityFrameworkCore.Tools](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Tools/9.0.3) * `dotnet add package Microsoft.EntityFrameworkCore.Tools --version 9.0.3` ### Data project [Microsoft.EntityFrameworkCore](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/9.0.3) * `dotnet add package Microsoft.EntityFrameworkCore --version 9.0.3` [Microsoft.EntityFrameworkCore.Sqlite](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite/9.0.3) * `dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 9.0.3`