http://blog.magnusmontin.net/2013/05/30/generic-dal-using-entity-framework/