Skip to content

Improve EF Core breaking change coverage #34812

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 26, 2025

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
2 participants