Implementações .NET compatíveis com Core EF

Queremos que o EF Core esteja disponível para os desenvolvedores em todas as implementações modernas do .NET e ainda estamos trabalhando para essa finalidade. Embora o suporte para EF Core no .NET Core esteja coberto pelo teste automatizado e saibamos que muitos aplicativos utilizam o EF Core com êxito, o Mono, o Xamarin e o UWP têm alguns problemas.

Visão geral

A tabela a seguir fornece diretrizes para cada implementação do .NET:

EF Core 3.1 5.0 6,0
.NET & .NET Core 3.1 5.0 6,0
.NET Standard(1) 2.0 2.1
.NET Framework(2) 4.7.2
Mono 5.4 6.4
Xamarin.iOS(3) 10.14 12.16 (use o .NET 6)
Xamarin.Mac(3) 3.8 5.16 (use o .NET 6)
Xamarin.Android(3) 8.0 10.0 (use o .NET 6)
UWP(4) 10.0.16299 (use Windows SDK do Aplicativo)
Unity(5) 2018.1 2021.2 TBD
Tizen(6) 4,0 6,0 (use o .NET 6)

(1) .NET Standard foi superada por uma nova abordagem de uniformidade. Para obter mais informações, consulte O futuro do .NET Standard.

(2) Consulte a seção .NET Framework abaixo.

(3) Há problemas e limitações conhecidas com o Xamarin que podem impedir que alguns aplicativos desenvolvidos usando EF Core funcionam corretamente. Verifique a lista de problemas ativos para obter soluções alternativas.

(4) Instale o pacote UWP 6.x do .NET Core. Confira a seção sobre a Plataforma Universal do Windows deste artigo.

(5) Há problemas e limitações conhecidas com o Unity. Verifique a lista de problemas ativos.

(6) EF Core compatibilidade com Tizen é amplamente desconhecida. Se você já experimentou, vamos gostar de seus comentários.

.NET Framework

Os aplicativos para .NET Framework podem precisar de alterações para funcionar com as bibliotecas do .NET Standard:

Edite o arquivo de projeto e verifique se que a seguinte entrada aparece no grupo de propriedades inicial:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

Para projetos de teste, verifique também se a seguinte entrada está presente:

<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

Se quiser usar uma versão mais antiga do Visual Studio, atualize o cliente NuGet para a versão 3.6.0. Assim, a versão anterior funcionará com as bibliotecas do .NET Standard 2.0.

Também recomendamos migrar de packages.config do NuGet para PackageReference, se possível. Adicione a propriedade a seguir ao arquivo de projeto:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

Plataforma Universal do Windows

As versões anteriores do EF Core e da UWP do .NET tiveram vários problemas de compatibilidade, especialmente com aplicativos compilados com a cadeia de ferramentas do .NET Native. A nova versão da UWP do .NET adiciona suporte para o .NET Standard 2.0 e contém o .NET Native 2.0, que corrige a maioria dos problemas de compatibilidade relatados anteriormente. O EF Core 2.0.1 foi testado mais rigorosamente com a UWP, mas o teste não foi automatizado.

Ao usar o EF Core na UWP:

  • Para otimizar o desempenho de consultas, evite tipos anônimos nas consultas LINQ. A implantação de um aplicativo da UWP na loja de aplicativos exige a compilação do aplicativo com o .NET Native. Consultas com tipos anônimos tem um desempenho pior no .NET Native.

  • Para otimizar o SaveChanges() desempenho, use SaveChanges() e implemente INotifyPropertyChanged,INotifyPropertyChanginge INotifyCollectionChanged em seus tipos de entidade.

Relatar problemas

Para qualquer combinação que não funcione conforme o esperado, recomendamos criar problemas no rastreador de problemas do EF Core. Para problemas específicos de Xamarin use o rastreador de problemas para Xamarin.Android ou Xamarin.iOS.