Deshabilitando identity map en Linq to Sql

Nota: Identity Map es un patrón de diseño que es parte fundamental del funcionamiento de cualquier ORM, deshabilitarlo tiene sus consecuencias ya que es necesario cuando vas a hacer actualizaciones a la base de datos.

Para mas información al respecto, puedes leer:
http://codebetter.com/blogs/ian_cooper/archive/2008/03/09/architecting-linq-to-sql-applications-part-7.aspx

Martin Fowler’s Patterns of Enteprise Application Architecture

Por favor, si no entiende las consecuencias de lo que aquí recomiendo, o no le gusta leer, no siga los siguientes pasos.

Para que se usa el Identity Map:
El objetivo de Identity Map consiste en siempre devolver la misma instancia del objeto, aun cuando sea el resultado de 2 operaciones distintas de nuestro DataContext (en el caso de linq). Lo cual significa que la primera vez que se obtiene una entidad de la base de datos esta es persistida en el mapa de identidad y en próximas consultas, en lugar de crear una nueva instancia devuelve la que ya tienes en memoria. Esto es realizado así con el fin de mantener la unidad de trabajo (patron: unit of work), de tal manera que no pierdas los cambios que hayas realizado al objeto en memoria.

Cuando esto puede tener un efecto no deseado:
Cuando quieres obtener el valor tal cual esta en la base de datos, mismo que pudo haber sido modificado en el management studio, por otro sistema u otro usuario en tu mismo sistema.

Que puedo hacer
Si tu objetivo es la lectura exclusivamente de información de la base de datos.  Puedes indicarle a tu contexto que no de seguimiento a los objetos.

ObjectTrackingEnabled=false

O si tu objetivo es solo para el objeto u objetos que vas a utilizar, existe un metodo Refresh en el DataContext que te permite actualizar la entidad en el identity map con los valores de la base de datos.

La importancia de las redes Wifi en las preferencias del consumidor

En los últimos meses hemos visto un crecimiento contundente en el acceso a las tecnologías, y el impacto de las redes sociales en la comunicación entre las personas. Hace tan solo un par de años, encontrar a un amigo de la infancia en Hi5 o Facebook, era un acontecimiento raro, si no te dedicabas al rubro de la tecnología.

Ahora no son raras las reuniones de viejos amigos que se pusieron de acuerdo por una red social. Y tampoco es raro ver en un restaurante a un grupo de amigos con algún dispositivo para conectarse a las mismas.

Y es por eso que me cuestiono, cuanto tiempo tardaran las cadenas de restaurantes que aún no lo han hecho, en percatarse que algunos de sus comensales han decidido comer en otro lugar, por el simple hecho de que no cuentan con Internet.

Si bien es cierto que la gente va a los restaurantes a ingerir sus alimentos, muchos de ellos tienen la necesidad de enviar un correo desde su computadora portátil o quieren reportarle al mundo entero que se encuentran en su restaurante a cambio de un batch de foursquare.

Hoy en día mas de una vez he dejado de comer en Toks o el Charco de las Ranas, solo porque no tienen Internet. Prefiriendo lugares que cuenten con acceso al mismo, de manera gratuita. Aunque su comida en algunos de los casos no la disfrute tanto.

Es por ello que me he dado a la tarea de publicar este post, con el único fin de contribuir a que mas empresas consideren esto como una necesidad.

O digame estimado lector, cuantos clientes esta dispuesto a perder por no darle importancia a la tecnología.