.NET implementations supported by EF Core
We want EF Core to be available to developers on all modern .NET implementations, and we're still working towards that goal. While EF Core's support on .NET Core is covered by automated testing and many applications known to be using it successfully, Mono, Xamarin and UWP have some issues.
The following table provides guidance for each .NET implementation:
|EF Core||2.1 and 3.1|
(1) See the .NET Framework section below.
(2) There are issues and known limitations with Xamarin which may prevent some applications developed using EF Core from working correctly. Check the list of active issues for workarounds.
(4) There are issues and known limitations with Unity. Check the list of active issues.
Applications that target .NET Framework may need changes to work with .NET Standard libraries:
Edit the project file and make sure the following entry appears in the initial property group:
For test projects, also make sure the following entry is present:
If you want to use an older version of Visual Studio, make sure you upgrade the NuGet client to version 3.6.0 to work with .NET Standard 2.0 libraries.
We also recommend migrating from NuGet packages.config to PackageReference if possible. Add the following property to your project file:
Universal Windows Platform
Earlier versions of EF Core and .NET UWP had numerous compatibility issues, especially with applications compiled with the .NET Native toolchain. The new .NET UWP version adds support for .NET Standard 2.0 and contains .NET Native 2.0, which fixes most of the compatibility issues previously reported. EF Core 2.0.1 has been tested more thoroughly with UWP but testing is not automated.
When using EF Core on UWP:
To optimize query performance, avoid anonymous types in LINQ queries. Deploying a UWP application to the app store requires an application to be compiled with .NET Native. Queries with anonymous types have worse performance on .NET Native.
SaveChanges()performance, use ChangeTrackingStrategy.ChangingAndChangedNotifications and implement INotifyPropertyChanged, INotifyPropertyChanging, and INotifyCollectionChanged in your entity types.