Pasión por la tecnología…

febrero 6, 2010

ADO.NET Entity Framework: creación de aplicaciones N-Capas!

Archivado en: .NET Framework 3.5,.NET Framework 4.0 — Juan Carlos González Martín @ 22:13

Una de las cuestiones que más dudas plantea a la hora de considerar ADO.NET Entity Framework como tecnología base para abstraernos del acceso a datos en las aplicaciones que vamos a construir es como de fácil es construir aplicaciones distribuidas con esta tecnología. Como siempre, sobre este tema hay algunos recursos en la red que permiten ver un poco de luz y llegar a la conclusión de que fácil no es, pero se puede hacer. Aquí os dejo una serie de enlaces sobre la creación de aplicaciones N-Capas con ADO.NET EF.

N-Capas en EF 1.0

La primera versión de EF tenía un soporte bastante limitado para la creación de aplicaciones N-Capas. Aún así, hay varios recursos en la red muy recomendables en torno al tema.

Mejoras en EF 4.0

La nueva versión de EF va a traer mejoras en lo que a soporte de n-capas se refiere.

Otros enlaces de interés

enero 17, 2010

ADO.NET EF: + recursos y trabajo con plantillas T4!

Archivado en: .NET Framework 3.5,ADO.NET Entity Framework,Visual Studio 2010 — Juan Carlos González Martín @ 22:00

Una de las novedades que vienen con la versión 4.0 de ADO.NET Entity Framework es el soporte para trabajar con plantillas T4. Indagando sobre T4, me he dado cuenta de que esta característica tan potente no es nueva de Visual Studio 2010, sino que ya está disponible en versiones anteriores (en concreto en VS 2005 y VS 2008). Os dejo algunos enlaces de interés respecto a EF 4.0, las posibilidades del uso de T4 en la construcción de aplicaciones software y por supuesto su relación con EF.

diciembre 17, 2009

ADO.NET Data Services: Disponible la actualización para .NET Framework 3.5 SP1!

Archivado en: .NET Framework 3.5,ADO.NET Data Services,SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 20:52

El equipo de ADO.NET Data Services acaba de liberar la actualización de esta tecnología para .NET Framework 3.5 SP1. Esta actualización permite que podamos utilizar las características de ADO.NET Data Services disponibles en .NET Framework 4.0 y Visual Studio 2010 en Visual Studio 2008 y .NET Framework 3.5 SP1. Los enlaces de descarga de la actualización son los siguientes:

  • Para Windows 7 y Windows Server 2008 R2, puedes utilizar este enlace.
  • Para el resto de versiones de Windows, puedes utilizar este enlace.

Respecto a lo que contiene esta actualización, comentaros que se trata de todas las capacidades que teníamos en ADO.NET Data Services 3.5 incluyendo la posibilidad de realizar consultas contra listas de SharePoint 2010.

septiembre 23, 2009

.NET Framework 3.5 Chart Controls: Como consumir los datos de un cubo de Analysis Services!

Archivado en: .NET Framework,.NET Framework 3.5 — Juan Carlos González Martín @ 21:38

Hace unos meses que tenía pendiente escribir este post sobre como consumir los datos de un cubo de SQL Server Analysis Services (SSAS) dentro de los .NET Framework 3.5 Chart Controls. La verdad es que el tema tiene sus truquillos, aunque por suerte y gracias a alguna ayudita de los chic@s de CIC, conseguí hacer una pequeña prueba de como mostrar datos de un cubo de SSAS en un control de tipo gráfico de los Chart Controls…y de aquí a llevarlo a SharePoint coser y cantar ;-). Básicamente los pasos a seguir de forma resumida son los siguientes:

  • En primer lugar, añadir a nuestra capa de presentación un control de tipo Chart. En mi caso, cogí un proyecto de tipo Web.
  • Añadir a nuestro proyecto una referencia a Microsoft.AnalysisServices.AdmdClient para poder conectaros al cubo y devolver los datos necesarios.

image

  • En la vista de código de nuestra página ASP.NET añadir las referencias necesarias para configurar por un lado el chart control y acceder por otro al cubo de SSAS.

using System.Data;

using Microsoft.AnalysisServices.AdomdClient;

using System.Web.UI.DataVisualization;

using System.Web.UI.DataVisualization.Charting;

using System.Drawing;

  • Configurar de forma adecuada los distintos parámetros del cubo como escala, tipo de gráfico, etiquetas de los ejes, etc. Como esta parte es un tanto pesada, no os replico el código.
  • Probar la consulta al cubo SSAS dentro del SQL Server Management Studio para asegurarnos de que los datos que devuelve son los que esperamos.

image

  • En mi caso, la consulta es:

SELECT NON EMPTY { [Measures].[Internet Sales Amount] }

ON COLUMNS, NON EMPTY { ([Customer].[Country].[Country].ALLMEMBERS *

                        [Customer].[State-Province].[State-Province].ALLMEMBERS *

    [Customer].[City].[City].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION,

    MEMBER_UNIQUE_NAME ON ROWS FROM [Adventure Works] CELL PROPERTIES VALUE,

    BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME,

    FONT_SIZE, FONT_FLAGS

  • Replicar la consulta anterior en un método de la página ASP.NET. En este caso el método tendría que contener al menos el siguiente código:

                CadenaConsulta =

                    "SELECT NON EMPTY { [Measures].[Internet Sales Amount] }"+

                    " ON COLUMNS, NON EMPTY { ([Customer].[Country].[Country].ALLMEMBERS *" +

                    " [Customer].[State-Province].[State-Province].ALLMEMBERS *" +

                    " [Customer].[City].[City].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION," +

                    " MEMBER_UNIQUE_NAME ON ROWS FROM [Adventure Works] CELL PROPERTIES VALUE, BACK_COLOR," +

                    " FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS";

               

                CadenaConexion =

                    "Provider=MSOLAP.4;Data Source=SHAREPOINT-SSRS;Integrated Security=SSPI;" +

                    "Data Source=SHAREPOINT-SSRS;Initial Catalog=Adventure Works DW";

 

                 //Nos creamos un objeto de tipo CellSet para guardar los resultados de la consulta:

                CellSet CS_Auxiliar;               

 

                //Establecemos la conexión:

                AdomdConnection ADOM_Conexion =

                    new AdomdConnection();

                ADOM_Conexion =

                    this.Establecer_Conexion();

               

                //nos creamos un objeto de tipo ADOMDCommand:

                AdomdCommand ADOM_Control =

                    new AdomdCommand();

                ADOM_Control =

                    new AdomdCommand(CadenaConsulta, ADOM_Conexion);

 

                // Con el método ExecuteCellSet ejecutaremos la consulta que tenemos en ADOMDConsulta.

                // Los resultados se guardarán en un objeto de tipo CellSet:

                CS_Auxiliar =

                    ADOM_Control.ExecuteCellSet();

 

                // Cerramos la conexión:

                this.Cerrar_Conexion(ADOM_Conexion);

 

                // Retornamos el objeto CS_Consulta:

                return CS_Auxiliar;

  • Cómo se puede observar en el código anterior, simplemente:
    • He “pegado” en código la consulta que había probado en el SQL Server Management Studio.
    • A continuación especifico la cadena de conexión al cubo de SSAS. La clave de esta cadena está en especificar el proveedor adecuado (MSOLAP.4 para SSRS 2008), el servidor, fuente de datos y cubo.
    • A continuación se declaramos un objeto de tipo CellSet en el que almacenaremos los resultados devueltos al ejecutar la consulta al cubo de SSAS.
    • Creamos una instancia de AdomdConnection para conectarnos al cubo.
    • Abrimos la conexión al cubo.
    • Creamos una instancia de AdomdCommand a partir de la cadena de consulta al cubo y la cadena de conexión al mismo.
    • A continuación llamamos al método ExecuteCellSet() del objeto anterior para ejecutar la consulta y el resultado lo guardamos en el objeto de tipo CellSet.
    • Finalmente, cerramos la conexión al cubo.
    • Devolvemos el objeto CellSet puesto que será el que utilicemos para alimentar el chart control.
  • Los métodos para abrir y cerrar la conexión al cubo son los siguientes:

        // Método para abrir la conexión:

        private AdomdConnection Establecer_Conexion()

        {

            //Con el objto conexión establecemos la conexión a través de la propiedad

            //cadena de conexión que nos ha pasado el usuario:

            AdomdConnection ACon_Conexion=null;

            try

            {

                ACon_Conexion =

                    new AdomdConnection(CadenaConexion);  

                //Ahora abrimos esa conexión:

                ACon_Conexion.Open();

                string version =

                    ACon_Conexion.ClientVersion;  

                //Retornamos la conexión:

                return ACon_Conexion;

            }

            catch (Exception  ex)

            {

                return ACon_Conexion;

            }

        }  

        // Método para cerrar la conexión:

        private void Cerrar_Conexion(AdomdConnection ACon_Conexion)

        {

            ACon_Conexion.Close();

        }

  • Finalmente, si visualizamos nuestra página ASP.NET, el resultado que obtendremos es el siguiente:

image

Y hasta aquí llega este ejemplo sobre como mostrar datos de un cubo de SSAS en un chart control. Espero que el post os haya resultado interesante.

septiembre 1, 2009

ADO.NET Data Services 1.5: Disponible para descarga la CTP2!

Archivado en: .NET Framework 3.5,.NET Framework 4.0,ADO.NET Data Services — Juan Carlos González Martín @ 20:47

El equipo de ADO.NET Data Services acaba de anunciar la disponibilidad de la CTP 2 de ADO.NET Data Services v1.5. Como novedad de la segunda CTP de ADO.NET Data Services 1.5, descargable a través de este enlace, comentaros que se asienta sobre .NET Framework 3.5 SP1 y Silverlight 3, si bien las características incluidas formarán parte de la versión final de .NET Framework 4.0. En cuanto a las novedades en sí, os hago un resumen rápido de lo que se comenta en el post que anuncia la disponibilidad de la CTP2:

  • Soporte para proyecciones, de manera que el formato URI de ADO.NET Data Services permite trabajar en cliente y servidor con un subconjunto de las propiedades de una entidad. Además, se añade soporte a LINQ y otras capacidades de los lenguajes .NET como tipos anónimos.
  • El Data Binding se ha extendido para que soporte Two-Way Data Binding.
  • Mejoras a la hora de conocer el número total de registros para una cierta entidad.
  • Feeds amigables, a través de extender el número de elementos ATOM que se pueden mapear con propiedades de una entidad.
  • Soporte para BLOB en el lado del cliente (incluido Silverlight 3).
  • Se ha introducido una nueva interfaz Data Service Provider para habilitar los Custom Providers que terceros puedan escribir e ir de esta forma más allá de Entity Framework, LINQ To SQL o clases .NET arbitrarias.

Os recomiendo también leer las FAQ que vienen con el post.

enero 27, 2009

ADO.NET Entity Framework…listado de proveedores de terceros!

Archivado en: .NET Framework 3.5,ADO.NET Entity Framework — Juan Carlos González Martín @ 23:11

Como sabéis, durante los últimos meses se ha producido un goteo continuo de nuevos proveedores de terceros con soporte de terceros para ADO.NET Entity Framework. Por este motivo, Microsoft ha habilitado una lista de estos proveedores para facilitar su localización:

image image

En cuanto al listado de proveedores, veréis que a día de hoy tenemos los siguientes con soporte para ADO.NET EF:

Devart, que ofrece soporte para ADO.NET EF para BD’s Oracle, MySQl y PostgreSQL.

 

Phoenix Software Solutions, con un proveedor específico de ADO.NET EF para SQLite.

 

 


Npgsql, con un proveedor para PostgreSQL.

 

 


Sybase SQL Anywhere, con soporte para BD’s SQL Anywhere a través de LINQ, eSQL y ADO.NET Data Services.

 

 


IBM, con un proveedor preparado para BD’s DB2, Informix y U2.

 

 

OpenLink Software, con un proveedor para de modo nativo a datos Virtuoso(SQL, XML y RDF) y tablas de Virtuoso vinculadas mediante fuentes externas ODBC y JDBC

 

 


Firebird, en versión beta, se trata de un proveedor de ADO.NET EF preparado para trabajar con BD’s firebird.

diciembre 19, 2008

ADO.NET Entity Framework: Actualizaciones en la documentación!

Archivado en: .NET Framework 3.5,ADO.NET Entity Framework,Visual Studio 2008 — Juan Carlos González Martín @ 22:40

Microsoft acaba de realizar una serie de actualizaciones de la documentación de ADO.NET Entity Framework (ADO.NET EF) enfocadas a resolver preguntas frecuentes en el trabajo con entity keys, edición manual de edmx y otros aspectos:

noviembre 30, 2008

Web Platform Installer: Disponible la RC!

Archivado en: .NET Framework 3.5,SQL Server 2005,Utilidades,Visual Studio 2008 — Juan Carlos González Martín @ 22:11

Ya tenemos disponible para descarga la primera release candidate del Web Platform Installer. Se trata de una simple herramienta que instala todos los componentes de un entorno web típico Microsoft: IIS 7, Visual Studio Web Developer 2008 Express Edition, SQL Server Express Edition y .NET Framework. Por supuesto, el proceso de instalación nos permitirá elegir que componentes queremos instalar.

Podéis descargaros el instalador de este enlace.

noviembre 6, 2008

ASP.NET Dynamic Data: Scaffolding!

Archivado en: .NET Framework 3.5,ASP.NET Dynamic Data,Visual Studio 2008 — Juan Carlos González Martín @ 23:44

En este post y en los siguientes os vamos a presentar una de las grandes novedades de .NET Framework 3.5 SP1 y Visual Studio 2008 SP1: ASP.NET Dynamic Data. Esta tecnología nos proporciona toda la infraestructura necesaria para crear aplicaciones web dinámicas basadas en un modelo de datos de ADO.NET Entity Framework (ADO.NET EF) o de LINQ To SQL (Nota: Proporciona scaffolding sobre el modelo). En nuestro caso, utilizaremos un EDM de ADO.NET EF. Empecemos.

Primeros pasos con ASP.NET Dynamic Data

Para probar la funcionalidad de ASP.NET Dynamic Data seguiremos los siguientes pasos:

  • Creamos en primer lugar un proyecto Web de Visual Studio 2008 de tipo Dynamic Data Entities Web Application (Nota: Para LINQ To SQL elegiríamos Dynamic Data Web Application).
  • Tras pulsar OK, veremos que se nos crea toda la infraestructura necesaria para generar interfaces de usuario dinámicas a partir del modelo (de datos o de entidades) que definamos. Se trata de una aplicación web centrada en datos formada por una serie de plantillas de páginas y campos que aportan el carácter dinámico de una aplicación ASP.NET Dynamic Data.
  • Una vez creado el proyecto de ASP.NET Dynamic Data, tenemos que crear el modelo en el que se apoya. Como se ha comentado, se trata de un EDM de ADO.NET EF. Vamos a crear un modelo basado en la base de datos (BD) AdventureWorksLT. Añadimos un nuevo elemento a nuestro proyecto de tipo ADO.NET Entity Data Model.
image image

image

Para crear el EDM seguimos los siguientes pasos:

  • Creamos la cadena de conexión a la BD AdventureWorksLT.
  • Especificamos un nombre para la cadena de conexión: AdventureWorksContext.
  • Elegimos todas las tablas de AdventureWorksLT exceptuando la tabla BuildVersion:
image image

image

Una vez creado el EDM, tenemos que conectarlo con la aplicación Dynamic Data que hemos creado. Para ello, abrimos el archivo Global.asax del proyecto y descomentamos y actualizamos la línea siguiente:

            model.RegisterContext(typeof(AdventureWorksContext),

                new ContextConfiguration() { ScaffoldAllTables = true });

De esta forma:

  • Estamos registrando nuestro EDM en nuestra aplicación ASP.NET Dynamic Data.
  • Especificamos que el atributo ScaffoldAllTables tenga el valor True, de manera que permitimos que todas las tablas de nuestro modelo tengan una plantilla asociada. Si quisiéramos tener sólo plantillas para ciertas tablas del modelo, tendríamos que crear una clase parcial para estas tablas y aplicar el atributo [Scaffold(true)] en su definición.

Sin más, ejecutamos la aplicación para ver que obtenemos:

  • En primer lugar, se muestra una página principal en la que se listan todas las tablas del EDM subyacente.
  • De nuevo en la página de detalle de la categoría tenemos soporte completo para operaciones CRUD sin necesidad de tener que escribir ningún tipo de código de acceso a datos.
  • Una duda que surge en torno a ASP.NET Dynamic Data es relativa a sí se está usando generación de código o no. La respuesta es que no, puesto que se están usando una serie de plantillas ASP.NET que renderizan de manera dinámica las páginas para cada entidad del modelo. Lógicamente, tendremos una plantilla para cada estado posible de un registro, y esto es lo que da el soporte CRUD comentado.
image image

image

Además de las plantillas de páginas, tenemos una serie de plantillas a nivel de campo que permiten renderizar campos individuales en cada página. Hay una serie de plantillas para distintos estados (edición, inserción), que son user controls, preparadas para renderizar un cierto tipo de datos. Además, tendremos plantillas que no mapean tipos CLR, sino que se utilizan para los campos de tipo Foreing Key.

 

image 

Y hasta aquí llega este primer post sobre ASP.NET Dynamic Data. Espero que os haya resultado interesante.

octubre 15, 2008

Nuevo Npgsql’s ADO.NET Provider para PostgreSQL con soporte para ADO.NET Entity Framework!

Archivado en: .NET Framework 3.5,ADO.NET Entity Framework,Visual Studio 2008 — Juan Carlos González Martín @ 19:58

Parece que los fabricantes de software siguen trabajando a todo tren en crear nuevos proveedores para ADO.NET Entity Framework que permitan utilizar esta tecnología sobre motores de bases de datos existentes. en este caso, Npgsql ha liberado la versión 2.0 de su proveedor de ADO.NET para PostgreSQL. La novedad de esta versión es que incluye soporte para ADO.NET EF. Para más información podéis consultar este post del equipo de ADO.NET EF y este enlace de la web PgFoundry.

Página siguiente »

El tema Rubric. Create a free website or blog at WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 40 seguidores