Skip to content

Conversation

@guardrex
Copy link
Collaborator

@guardrex guardrex commented Feb 26, 2025

Fixes #34775

Thanks @kemundos! 🚀 ... The updates here will now address the EF Core tools breaking change better and will solve this for everyone going forward for the .NET 9 version of the tutorial. I've versioned it to drop out at .NET 10 or later, when they'll have it fixed in the tooling.


Internal previews

📄 File 🔗 Preview link
aspnetcore/blazor/tutorials/movie-database-app/part-2.md aspnetcore/blazor/tutorials/movie-database-app/part-2

@guardrex
Copy link
Collaborator Author

guardrex commented Feb 26, 2025

@Rick-Anderson @tdykstra @wadepickett ... This is going to apply to any tutorial that's using EF Core tooling. Here's the way that I'm covering it in the Blazor movie dB tutorial. Hopefully, it will be a quick-ish 🏃‍♂️ cut-'n-paste for other tutorials/articles.

I asked if they would reconsider backporting the fix to 9.0 to avoid this article pain, but I have a bad feeling that we'll be stuck with the coverage forever. Cross-ref: dotnet/efcore#35265 (comment)

:::moniker range=">= aspnetcore-10.0"

```dotnetcli
dotnet tool install --global dotnet-aspnet-codegenerator
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.SQLite
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.AspNetCore.Components.QuickGrid
dotnet add package Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
```

> [!IMPORTANT]
> After the first eight commands execute, make sure that you press <kbd>Enter</kbd> on the keyboard to execute the last command.

:::moniker-end

:::moniker range=">= aspnetcore-9.0 < aspnetcore-10.0"

```dotnetcli
dotnet tool install --global dotnet-aspnet-codegenerator
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.SQLite
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.AspNetCore.Components.QuickGrid
dotnet add package Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Design
```

> [!IMPORTANT]
> After the first nine commands execute, make sure that you press <kbd>Enter</kbd> on the keyboard to execute the last command.

Open the app's project file (`BlazorWebAppMovies.csproj`). Mark the `Microsoft.EntityFrameworkCore.Design` assembly reference as publishable by adding `<Publish>true</Publish>` to the package reference. In the following example, the `{VERSION}` placeholder is the package's version and remains unchanged:

```diff
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="{VERSION}">
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  <PrivateAssets>all</PrivateAssets>
+ <Publish>true</Publish>
</PackageReference>
```

The preceding update to the package reference is a workaround for a breaking change in .NET 9 EF Core tooling. The change to the package reference can be reverted in apps that are eventually updated to .NET 10 or later. For more information, see [Breaking changes in EF Core 9 (EF9)](/ef/core/what-is-new/ef-core-9.0/breaking-changes#microsoftentityframeworkcoredesign-not-found-when-using-ef-tools).

:::moniker-end

:::moniker range="< aspnetcore-9.0"

```dotnetcli
dotnet tool install --global dotnet-aspnet-codegenerator
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.SQLite
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.AspNetCore.Components.QuickGrid
dotnet add package Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
```

> [!IMPORTANT]
> After the first eight commands execute, make sure that you press <kbd>Enter</kbd> on the keyboard to execute the last command.

:::moniker-end

@guardrex guardrex merged commit b25ec3e into main Feb 26, 2025
3 checks passed
@guardrex guardrex deleted the guardrex/blazor-movie-tutorial-ef-core-workaround branch February 26, 2025 13:16
@wadepickett
Copy link
Contributor

@guardrex, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Doesn't work with .net core 9.x

3 participants