Implementaciones de .NET compatibles con EF Core
Queremos que EF Core esté disponible para los desarrolladores en todas las implementaciones de .NET modernas y seguimos trabajando para alcanzar ese objetivo. Aunque la compatibilidad de EF Core en .NET Core está cubierta por pruebas automatizadas y se sabe que muchas aplicaciones van a usarlo correctamente, Mono, Xamarin y UWP presentan algunos problemas.
Información general
En la siguiente tabla se ofrecen instrucciones para cada implementación de .NET:
| EF Core | 3.1 | 5.0 |
|---|---|---|
| .NET Standard | 2.0 | 2.1 |
| .NET Core | 2.0 | 3.0 |
| .NET Framework(1) | 4.7.2 | (no se admite) |
| Mono | 5.4 | 6.4 |
| Xamarin.iOS(2) | 10.14 | 12.16 |
| Xamarin.Mac(2) | 3.8 | 5.16 |
| Xamarin.Android(2) | 8.0 | 10.0 |
| UWP(3) | 10.0.16299 | TBD |
| Unity(4) | 2018.1 | TBD |
(1) Consulte la sección .NET Framework a continuación.
(2) Existen problemas y limitaciones conocidas con Xamarin que pueden impedir que algunas aplicaciones desarrolladas con EF Core funcionen correctamente. Compruebe la lista de problemas activos para ver soluciones alternativas.
(3) Se recomienda EF Core 2.0.1 y versiones más recientes. Instale el paquete .NET Core UWP 6.x. Consulte la sección Plataforma universal de Windows de este artículo.
(4) Hay problemas y limitaciones conocidas con Unity. Revise la lista de problemas activos.
.NET Framework
Es posible que las aplicaciones que tengan como destino .NET Framework deban modificarse para poder trabajar con bibliotecas de .NET Standard:
Edite el archivo de proyecto y asegúrese de que la siguiente entrada aparece en el grupo de propiedades inicial:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
En los proyectos de prueba, asegúrese también de que la entrada siguiente está presente:
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
Si quiere usar una versión anterior de Visual Studio, asegúrese de que actualiza el cliente de NuGet a la versión 3.6.0 para poder trabajar con bibliotecas de .NET Standard 2.0.
Si es posible, también se recomienda migrar de packages.config de NuGet a PackageReference. Agregue la propiedad siguiente al archivo del proyecto:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
Plataforma universal de Windows
Las versiones anteriores de EF Core y .NET UWP tuvieron numerosos problemas de compatibilidad, especialmente con aplicaciones compiladas con la cadena de herramientas de .NET Native. La nueva versión de .NET UWP agrega compatibilidad con .NET Standard 2.0 y contiene .NET Native 2.0, que soluciona la mayoría de los problemas de compatibilidad que se notificaban anteriormente. EF Core 2.0.1 se ha probado más exhaustivamente con UWP pero la prueba no está automatizada.
Al usar EF Core en UWP:
Para optimizar el rendimiento de las consultas, evite tipos anónimos en las consultas LINQ. Para implementar una aplicación de UWP en la tienda de aplicaciones, la aplicación debe estar compilada con .NET Native. Las consultas con tipos anónimos tienen un menor rendimiento en .NET Native.
Para optimizar el rendimiento, use
SaveChanges()SaveChanges()e implemente INotifyPropertyChanged, INotifyPropertyChanginge INotifyCollectionChanged en los tipos de entidad.
Problemas de informes
En el caso de cualquier combinación que no funcione según lo esperado, se recomienda crear nuevos problemas en el seguimiento de problemas de EF Core. En el caso de problemas relacionados con Xamarin, use el seguimiento de problemas de Xamarin.Android o de Xamarin.iOS.