How to optimize an Object Relational Mapper (ORM)?

Article available only in Spanish

Como usted ya puede suponer si leyó los artículos anteriores de esta serie, la principal desventaja del uso de ORMs es que uno tiende a desentenderse y, en consecuencia, desconocer la magia generada por el ORM para consultar y persistir datos en el RDBMS, dando por hecho que éste no sólo será capaz de cumplir con las acciones requeridas sino de hacerlo de forma eficiente. Esto es un grave error en aplicaciones complejas en las que el rendimiento es un factor clave. Sólo supervisando y entendiendo bien esta magia que hay por debajo de los ORMs nos permitirá optimizar el rendimiento de nuestras aplicaciones.

[More]

When to use an Object Relational Mapper (ORM)?

Article available only in Spanish

La principal ventaja que nos aporta el uso de un ORM es la reducción de código a escribir en nuestra aplicación en comparación con las técnicas tradicionales de acceso a datos sobre RDBMS. La principal desventaja derivada del alto nivel de abstracción generado entre el modelo de entidades de nuestra aplicación y el RDBMS subyacente es que se tiende a “pasar por alto” toda la “magia” que el ORM genera para interactuar con la base de datos relacional física. Esto, en último término, puede llevar a importantes deficiencias en el rendimiento de las aplicaciones. Así, el rendimiento de nuestra aplicación no solo depende del ORM, sino del uso que hacemos de él.

[More]

What are Object Relational Mappers (ORMs)?

Article available only in Spanish


Este artículo es el primero de una serie de tres que tienen como objetivo analizar las ventajas y desventajas del uso de ORMs (Object Relational Mappings) o, Mapeadores de Objetos Relacionales, así como proporcionar argumentos para decidir su inclusión o no en nuestro desarrollo de aplicaciones con especial atención en cómo afecta su uso al rendimiento global de las mismas.

[More]

Using PIVOT with SQL Server

PIVOT operator is mainly used to convert a result set from a SQL query into another one by rotating unique values in a specified field column, throughout the original result set, into new column fields in the final result set

[More]

SQL Training with Recursive Queries and Windowing Functions

In this article I'm going to show some useful SQL using "Recursive Queries" and "Windowing Functions". So, the article is meant to intermediate level SQL programmers or those who want to know a little more about this language. Detailed explanations about syntax can be obtained in Microsoft documentation (Windowing | Recursivity). It's not the goal of this article to explain all that again. So, have a look there to go deeper into it.

[More]

Leverage Unpivoting with SQL at a glance

Some days ago, I had to help others to solve a problem with SQL. This issue was related to convert fields in a result set into values in rows into the final desired result set. So, we are talking about making use of UNPIVOTING functionality. Finally, I thought, why not writing a little tip about?

[More]

Recursive SQL with Common Table Expressions

This post intends to set out how to make recursive SQL queries in a simple and straightforward manner using Common Table Expressions (CTE).

What are CTEs?

As it is said in Microsoft SQL Server documentation a CTE (Common Table Expression) can be thought of as a temporary result set that is defined within the execution scope of a single SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement. A CTE is similar to a derived table in that it is not stored as an object and lasts only for the duration of the query. Unlike a derived table, a CTE can be self-referencing (important for the purposes in this post!) and can be referenced multiple times in the same query.

[More]

Dealing with Multitenancy, Hosts file and IIS

As I was setting up a demo project on my local computer for dealing with a Multi-Tenancy application, I came across with some problems (like many other times). The issue this time had to do with accessing the same web application using different host names, each one employed for handling a different tenant (client).

So, here are the first steps to configure Hosts file in Windows, Visual Studio Web Applications and IIS and to begin to work properly with this kind of multi-tenant functionality.

[More]

Basic use of .Net Background Worker Class

This little article just tries to point out some important features (from my view) about how BackgroundWorker class works. More in depth, I would like to show what type of threads are executing each piece of code contained in event handlers being consumed by BackgroundWorker objects

[More]

Time has come to master delegates

The objective of this post is to show, in a hands-on way, the basic use of ordinary delegates and System.Func delegates with normal functions, anonymous functions and lambda expressions (which are actually anonymous functions as well...)

[More]