.NET implementations supported by EF Core
We want EF Core to be available anywhere you can write .NET code, and we're still working towards that goal. While EF Core's support on .NET Core and .NET Framework 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:
|.NET implementation||Status||EF Core 1.x requirements||EF Core 2.x requirements (1)|
|.NET Core (ASP.NET Core, Console, etc.)||Fully supported and recommended||.NET Core SDK 1.x||.NET Core SDK 2.x|
|.NET Framework (WinForms, WPF, ASP.NET, Console, etc.)||Fully supported and recommended. EF6 also available (2)||.NET Framework 4.5.1||.NET Framework 4.6.1|
|Mono & Xamarin||In progress (3)||Mono 4.6
|Universal Windows Platform||EF Core 2.0.1 recommended (4)||.NET Core UWP 5.x package||.NET Core UWP 6.x package|
(1) EF Core 2.0 targets and therefore requires .NET implementations that support .NET Standard 2.0.
(2) See Compare EF Core & EF6 to choose the right technology.
(3) There are issues and known limitations with Xamarin which may prevent some applications developed using EF Core 2.0 from working correctly. Check the list of active issues for workarounds.
(4) See the Universal Windows Platform section of this article.
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.