Desarrollo de un paquete NuGet para .NET Standard y EF Core

En Certia hemos dado vía libre a un servidor NuGet en el que iremos colocando código que consideremos útil para la comunidad. Hoy os enseñamos nuestro servidor NuGet y un paquete para acceder a la BD Northwind desde .NET Standard.

Una solución NuGet para nuestros cursos

Nuestros cursos suelen utilizar, desde tiempo inmemorial, la base de datos Northwind que Microsoft desarrolló hace ya mucho tiempo para las demos. Es una base de datos sencilla pero efectiva en la que puede encontrarse la mayor parte de las características que empleamos en nuestros cursos, ya sean de aplicaciones de escritorio, aplicaciones web o, más recientemente, Xamarin Forms o ASP.NET Core.

El problema está en cómo hacer llegar a nuestros alumnos la base de datos que empleamos en el curso (que tiene algunas modificaciones) de forma cómoda. Por supuesto, el viejo truco de la llave de memoria funciona, pero ahora contamos con un método más efectivo: distribuir la base de datos y el modelo de Entity Framework necesario para las demos mediante un paquete NuGet.

Nuestro paquete Certia.Northwind podéis encontrarlo en un servidor NuGet que hemos creado en Azure y que es de libre acceso. La dirección del servidor es http://certianuget.azurewebsites.net/nuget y podéis configurarla fácilmente en Visual Studio, desde Herramientas->Opciones->Administrador de paquetes NuGet.

Creación de un servidor NuGet

La creación y publicación de un servidor NuGet es trivial. Lo único que es necesario hacer es crear una aplicación web y emplear en dicha aplicación unos paquetes NuGet creados por Microsoft que sirven precísamente para crear servidores NuGet. Podéis encontrar los paquetes NuGet buscándolos en el administrador de paquetes NuGet como NuGet.Server.

Dichos paquetes añadirán todas las dependencias necesarias y crearán un directorio Packages que es el lugar en el que hemos de depositar los paquetes que vayamos creando. Tras publicar el servidor, lo único que hemos de hacer es subir los nuevos paquetes, una vez creados, al directorio Packages. Se publicarán automáticamente.

Una recomendación es que en el web.config de vuestra aplicación web establezcais a True la opción que requiere utilizar una clave para subir paquetes. Esto os permitirá actualizar los paquetes cómodamente desde Visual Studio pero además impedirá que nadie pueda subir paquetes a vuestro servidor.

Northwind y Entity Framework Core

Nuestra decisión ha sido utilizar EF Core para crear un modelo utilizable desde cualquier aplicación que emplee .NET Core. Eso significa crear una DLL de acceso a datos que incluya el modelo pero para que dicho modelo sea multiplataforma hemos utilizado .NET Standard, de modo que la librería resultante puede emplearse en cualquier aplicación que utilice .NET Core.

Además hemos incluido en el paquete el script completo de generación de la base de datos, y también están los datos incluidos en él, de modo que en muy poco tiempo podréis poner en marcha la base de datos y disponer asimismo de un modelo de objetos utilizable en cualquier aplicación de prueba.