Entradas

Mostrando entradas de marzo, 2017

Pruebas unitarias con Entity Framework Core

Las pruebas unitarias contra base de datos siempre son complicadas. Ya que en muchas ocasiones no podemos crear una base de datos vacía para nuestras pruebas. Si utilizamos Entity Framework esta tarea se hace muy sencilla, con este sencillo truco. En la que creamos una base de datos al inicializar el test y la borramos al terminarlo. Para ello deberemos utilizar los métodos EnsureCreated y EnsureDeleted, las cuales crean y borran una base de datos de una forma muy sencilla. [ ClassInitialize ()] public static void InitDataBase( TestContext context) {      using ( var db = new MyDbContext ())      {         db.Database.EnsureCreated();      } } [ ClassCleanup ] public static void DeleteDataBase() {     using ( var db = new MyDbContext ())     {         db.Database.EnsureDeleted();     } }

Particionar base de datos con Entity Framework Core

Supongamos que necesitamos dar soporte a varios clientes con una única aplicación. Por ejemplo ofreciendo SAAS (Software as a service). En la que tenemos el mismo software para todos los clientes, pero sus datos son independientes. La forma más sencilla seria crear una instancia de base de datos para cada cliente. Pero esto es costoso y no siempre viable, sobretodo si tenemos muchos clientes con un volumen de datos pequeño por cliente. Azure nos ofrece la posibilidad de crear grupos elásticos. Pero estos están limitados a un máximo de 500 bases de datos. Aunque parecen muchas, es posible que tengamos más clientes y la mayoría de ellos inactivos. Con lo que está opción no es siempre viable. Otra forma es marcar cada registro en base de datos con un campo instancia. En el que identificamos a que cliente o instancia pertenece da registro. Teniendo que insertar y meter en todas nuestras consultas la referencia a la instancia. Si utilizamos Entity Framework Core, estre trabajo se pued