This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)

Para complementar la serie de post que sobre LINQ To Entities y Visual Basic 2008 ha iniciado Jorge Serrano, en este primer post sobre ADO.NET Entity Framework os daré el punto de vista análogo a lo que Jorge ha explicado pero aplicado a la nueva versión de C # que aparece como una de las grandes novedades de Visual Studio 2008: C # 3.0. Antes de entrar en materia, la primera pregunta que se nos puede venir para los profanos en la materia es ¿Qué es ADo.NET Entity Framework? Como se describe en este artículo, una de las metas principales de la nueva versión de ADO.NET es elevar el nivel de abstracción de la programación contra fuentes de datos a través de la eliminación del "vacío" existente entre los modelos de datos y los lenguajes de programación. Y ¿Cómo es posible esto? A través de dos innovaciones claves de las que ya se ha hablado mucho en Geek.Ms: LINQ y ADO.NET Entity Framework. Precisamente éste último (Entity Framework) es un nuevo componente que aparece en familia de tecnologías ADO.NET, que habilitará acceso a datos mediante LINQ utilizando: LINQ To SQL, LINQ To DataSet y/o LINQ To Entities. Si tuviésemos que resumir las características de este Entity Framework, sin duda destacaríamos los siguientes puntos:

  • Se trata de un Framework que permite manipular y acceder a los datos como clases .NET.
  • Permite realizar un modelado de datos a nivel conceptual, es decir, habilita la separación de las aplicaciones y los esquemas de BD.
  • Permite una mejor interactuación de los datos con el entorno .NET: Se interactúa con objetos, frente a hacerlo con filas y columnas.
  • Proporciona una serie de servicios en tiempo de ejecución y en tiempo de diseño que permite a los desarrolladores describir los datos de la aplicación e interactuar con ellos a un nivel de abstracción conceptual claramente alineado con el concepto de implementación de aplicaciones de negocio, y que además ayuda a aislar la aplicación respecto a los esquemas de base de datos (BD) sobre los que se ha definido.
  • Como comentó Jorge en su post, se apoya en LINQ para definir las consultas a objetos del esquema EDM (Entity Data Model).
  • Supone una capa más, pero independiza las aplicaciones de el esquema de BD subyacente, independientemente de la tecnología de BD que se esté utilizando.

¿En qué se traduce esta independencia con el esquema de BD y la tecnología de BD? Pues básicamente en una arquitectura dividida en dos partes diferenciadas, Modelo de datos y Modelo Conceptual (EDM), en la que el paso de una parte a otra se realiza a través del correspondiente mapeo. Para realizar este mapeo se utilizan proveedores .NET que permiten interactuar con los datos en cada uno de las partes:

image

La idea es que el provider .NET de la capa de datos se encarga de traducir las operaciones de datos realizadas en la capa conceptual a un lenguaje entendible por la BD (lógicamente T-SQL). Por su parte, el proveedor .NET (EntitySQL) de la capa conceptual traduce las consultas LINQ realizadas en las aplicaciones a las correspondientes instrucciones que interactúen con el modelo conceptual definido mediante el proceso de mapeo.

Una vez repasadas las principales ideas y conceptos que hay bajo ADO.NET Entity Framework, vamos a ver en la práctica en que consiste trabajar en un nivel de abstracción superior. Los requisitos para poder probar ADO.NET Entity Framework ya los comentamos en este post.

Definiendo el EDM

Cómo comentó Jorge en su post, el primer paso para trabajar con ADO.NET Entity Framework pasa por crear un modelo de entidades a partir de un cierto esquema de BD. Para ello añadimos al proyecto un elemento de tipo ADO.NET Entity Data Model con lo que se iniciará un asistente que nos guiará en la creación del modelo a partir de:

  • Especificar la opción de generación del EDM (a partir de una BD o bien un EDM vacío.
  • Especificar la cadena de conexión a la BD (que como siempre, puede ser un archivo físico o bien una instancia de SQL Server).
  • Especificar que objetos de la BD queremos que formen de nuestro EDM (en este caso, tablas y procedimientos almacenados).
Curso_LINQ_Lab4_3 image image

Tras pulsar Finish en la última pantalla del asistente, ya tendremos creado el modelo de entidades que en esencia es un fichero .edmx que contiene toda la definición del modelo. Si inspeccionamos el modelo veremos:

  • Se han generado tantas entidades como tablas de la BD relacional.
  • Al seleccionar cada entidad, podremos ver los detalles de la misma en cuanto a miembros y la correspondencia de los campos de la entidad con sus equivalentes en la tabla de la BD.
  • El explorador del modelo nos permitirá ir navegando por los componentes del mismo: entidades, asociaciones entre entidades, funciones, etc.
  • Finalmente, para tener una idea del código generado por el asistente, basta con que nos vayamos al Class Viewer o al Object Browser e inspeccionemos los distintos elementos generados.
image image

Consultando Entidades

Como ya comentó Jorge, una de las formas que tenemos para definir consultas contra el EDM es a través de LINQ To Entities que nos dota de toda la potencia y capacidades de LINQ sobre ADO.NET Entity Framework, así como funcionalidad de ORM (Object Relational Model), de manera que los desarrolladores pueden materializar sus entidades en tipos del CLR y programar de forma más sencilla contra el EDM y la base de datos. Lo primero que tenemos que hacer es añadir a nuestra aplicación las sentencias using necesarias:

  • using System.Data.EntityClient;
  • using System.Data.Common;
  • using System.Data;

El siguiente paso consiste en instanciar el modelo EDM creado y definir la correspondiente consulta LINQ. Por ejemplo:

            //Instancia del modelo de entidades creado

            ClientesModel.Entidades_BD_Clientes ModeloClientes=

                new ClientesModel.Entidades_BD_Clientes();           

            //Consulta de entidades!

            var clientes =

                (from c in ModeloClientes.Md_Clientes

                 from v in ModeloClientes.Md_Vehiculos

                 where c.ID_Cliente==v.ID_Cliente

                 select c).Distinct();

            Console.WriteLine("***********Consulta LINQ To Entities***********");

            foreach (var c in clientes)

            {

                Console.WriteLine("NIF={0}, Direccion={1}",

                    c.ID_Cliente, c.DireccionCliente + " " + c.CiudadCliente);

            }

            Console.ReadLine();

Como vemos, lo primero que hacemos es crear un objeto denominado ClientesModel que es una instacia de ClientesModel.Entidades_BD_Clientes(). La primera parte se corresponde a nuestro EDM, y la segunda (Entidades_BD_Clientes) es un objeto que ha sido añadida al modelo en el momento de su creación y que hereda de ObjectContext, clase que se encarga de mantener la conexión e información de los metadatos necesaria para leer, escribir, actualizar o borrar entidades en la BD. Además, también referencia la clase ObjectStateManager que se encarga de aspectos relacionados con el tracking de cambios y la resolución de identidades...esto ya lo vimos con LINQ To SQL: si una consulta nos devuelve un objeto del modelo, este es persistido a través de otras consultas mientras que exista el objeto de contexto correspondiente. Sin más, la salida por pantalla que se obtiene de la consulta anterior es:

image 

Operaciones de actualización, insercción y borrado de entidades

Como ocurría con LINQ To SQL, ADO.NET Entity Framework a través de LINQ To Entities nos permite realizar de manera sencilla operaciones de actualización, inserción o borrado a través de la interactuación con las entidades del modelo. Para actualizar una entidad, basta con crear una instancia de la misma a partir de realizar una consulta a la BD de los resultados a actualizar (consulta con C # plano o mediante query expression):

            //Actualización

            Console.WriteLine("***********Actualizando las Entidades***********");

            ClientesModel.Md_Clientes ClienteToUpdate =

                ModeloClientes.Md_Clientes.First(

                    c => c.ID_Cliente == "71505286B");

            ClienteToUpdate.CiudadCliente="Torrelavega";

            ModeloClientes.SaveChanges();           

            foreach (var c in clientes)

            {

                Console.WriteLine("NIF={0}, Direccion={1}",

                    c.ID_Cliente, c.DireccionCliente + " " + c.CiudadCliente);

            }

Como vemos, la clave para llevar los datos a la BD está en el método SaveChanges(). Por otro lado, tal y como sucede con el caso de la primera consulta, gracias a que el objeto ObjectStateManager de encarga del tracking de los datos, los antiguos y nuevos valores se mantienen en el contexto de la aplicación y los cambios se pueden guardar en la BD. La salida por pantalla de la operación de actualización es:

image

Para añadir una entidad nueva basta con crear una nueva instancia de la entidad deseada, especificar sus propiedades y añadirla al modelo:

            //Insercción

            Console.ReadLine();

            Console.WriteLine("***********Añadiendo nuevas Entidades***********");

            ClientesModel.Md_Clientes ClienteToAdd =

                new ClientesModel.Md_Clientes();

            ClienteToAdd.ID_Cliente = "72678934C";

            ClienteToAdd.DireccionCliente = "C/ Ordoño II";

            ClienteToAdd.CiudadCliente = "León";

            ModeloClientes.AddToMd_Clientes(ClienteToAdd);

            ModeloClientes.SaveChanges();

            var AllClients =

             (from c in ModeloClientes.Md_Clientes

              select c);

            foreach (var c in AllClients)

            {

                Console.WriteLine("NIF={0}, Direccion={1}",

                    c.ID_Cliente, c.DireccionCliente + " " + c.CiudadCliente);

            }  

            Console.ReadLine();

En este caso la clave para preservar los datos en la BD está en el método AddToMd_Clientes() que es generado automáticamente en el modelo de creación del EDM y que recibe un objeto del tipo de la entidada a añadir, así cómo en el método SaveChanges(). La correspondiente salida por pantalla es:

image 

Para realizar el borrado de una entidad, se sigue la misma filosofía que para el caso de la actualización e insercción, sólo que en este caso se utiliza el método DeleteObject() y a continuación SaveChanges() para poder llevar los datos a la BD:

//Borrado

            Console.WriteLine("***********Borrado de clientes***********");                

            ClientesModel.Md_Clientes ClienteToDelete =

                ModeloClientes.Md_Clientes.First(

                    c => c.ID_Cliente == "72678934C");

            ModeloClientes.DeleteObject(ClienteToDelete);

            ModeloClientes.SaveChanges();

            Console.WriteLine("Clientes después de borrar");

            foreach (var c in AllClients)

            {

                Console.WriteLine("NIF={0}, Direccion={1}",

                    c.ID_Cliente, c.DireccionCliente + " " + c.CiudadCliente);

            }

            Console.ReadLine();

La correspondiente salida por pantalla es:

image

Y hasta aquí este primer post sobre ADO.NET Entity Framework en la práctica. En el próximo post os introduciré el concepto de Entity SQL y Entity Services, y os mostraré una interesante herramienta que tenemos disponible para facilitar la construcción de consultas contra un EDM. Espero que el post os haya resultado interesante.

Published 25/1/2008 1:26 por Juan Carlos González Martín

Comparte este post:

Comentarios

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 7:28 AM

Como casi siempre Juan Carlos, muy buena entrada y complementaria totalmente con lo que ponía en la mía.

¡¡¡Muchas gracias!!!

Jorge Serrano

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 8:14 AM

Muy buenas Jorge!

Gracias por tu comentario...tus entradas son buenísimas y tenemos que seguir escribiendo cosas sobre ADO.NET Entity Framework...una nueva capa / tecnología que va a dar mucho juego en la construcción de aplicaciones.

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 9:02 AM

Hola de nuevo Juan Carlos,

tengo en la recámara unas cuantas cosas, pero voy a ver si las saco poco a poco para no agobiar al personal y darles tiempo con nuestras entradas a que tomen contacto con LINQ y en este caso con LINQ to Entities que tiene muchísimo juego y muchas cosas que contar. :-)

Seguiremos ahí. :-D

Jorge Serrano

# LINQ to Entities y Visual Basic 2008 - Parte 1@ Friday, January 25, 2008 9:05 AM

LINQ to Entities (L2E) Resumen general de lo publicado sobre LINQ hasta el momento: Información general

El blog de Jorge

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 6:16 PM

En tu post mencionas que el estado de las entidades los controla el objeto ObjectStateManager el cual es parte del DataContext. ¿Sabes si el objeto DataContext es serialiable? ¿Si no es asi, como se controla el estado de las entidades en una aplicacion distribuida (n-tiers)?

Ismael Laurente

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 6:37 PM

Hola Ismael!

Muy buena pregunta...para la que no tengo una respuesta precisa, puesto que parece que este objeto si es parcialmente serializable, pero hay ciertos casos en los que podría no hacerlo. Te recomiendo leer este artículo:

oakleafblog.blogspot.com/.../linq-to-sql-and-entity-framework-xml.html

De todos modos, piensa que el Entity Framework está en Beta3...cabe esperar que en la RTM si que sea serializable o exista una forma clara de controlar el estado de las entidades entre capas de la aplicación.

Gracias por el apunte y un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, January 25, 2008 7:00 PM

Hola de nuevo!

Investigando un poco más el tema, he llegado a que el equivalente el objecto DataContext de LINQ To SQL (que realiza funiones equivalentes al ObjectContext de ADO.NET Entity Framework) no es serializable:

redmondmag.com/.../article.asp

Respecto al ObjectContext de Entity Framework, este artículo no me permite sacar nada en claro...las pruebas de Julie Lerman tampoco me sacan del atolladero...

www.thedatafarm.com/.../EntityFrameworkObjectGraphsAndViewstate.aspx

Saludos

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Saturday, January 26, 2008 10:34 AM

Para aclarar un poco las cosas:

ObjectContext no se serializable por lo que no se podrá mover entre capas para llevar un seguimiento de cambios. En esta primera release de Entity Framework no tendremos ninguna feature que nos permita realizar este trabajo de una forma cómoda por lo que será responsabilidad de cada uno la implementacion de su control de cambios entre capas. En la siguiente versión si la tendremos, personalmente estoy trabajando en un posible buena solución para este problema.

La segunda acotación que me gustaría hacer Juan Carlos es sobre ObjectStateManager, aunque el concepto pueda ser similar al de LinqToSql en cuanto a la conservación de las entidades para nada es igual, ObjectStateManager va mucho mas alla en la generacion de los grafos de relaciones entre objetos, es algo digno de ver su funcionamiento. Os propongo que metais en dos listas separadas los datos de dos entidades relacionadas y veáis como automáticamente realiza el grafo de relaciones entre ellas.

Para terminar me gustaría también hacer una anotración del post,muy bueno por cierto, realmente el Proveedor de Entity Sql no traduce LINQ, estas en un espacio inferior, lo que traduce es E-SQL del modelo conceptual al dialecto de la base de datos subyacente....

Unai

# Extensibilidad de LINQ: LINQ Flavours! « Pasi??n por la tecnolog??a…@ Sunday, March 2, 2008 12:59 PM

PingBack desde  Extensibilidad de LINQ: LINQ Flavours! « Pasi??n por la tecnolog??a…

Extensibilidad de LINQ: LINQ Flavours! « Pasi??n por la tecnolog??a…

# El evento de los eventos…La revolución en el acceso a datos: ADO.NET Entity Framework! « Pasi??n por la tecnolog??a…@ Monday, June 23, 2008 4:42 PM

PingBack desde  El evento de los eventos…La revolución en el acceso a datos: ADO.NET Entity Framework! « Pasi??n por la tecnolog??a…

El evento de los eventos…La revolución en el acceso a datos: ADO.NET Entity Framework! « Pasi??n por la tecnolog??a…

# ADO.NET EF:…las novedades no paran! « Pasi??n por la tecnolog??a…@ Tuesday, June 24, 2008 11:14 PM

PingBack desde  ADO.NET EF:…las novedades no paran! « Pasi??n por la tecnolog??a…

ADO.NET EF:…las novedades no paran! « Pasi??n por la tecnolog??a…

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Saturday, July 19, 2008 2:58 AM

Gracias por tus articulos, me parecen fantasticos!!.

Tengo la siguiente consulta, al instalar el update de VS2008 (VS90-KB945282) me sale en el siguiente mensaje: "None of the products that are addressed by this software update are installed on this computer. Click Cancel to exit setup.".

Tienes idea que puede ser?

Necesito tener instalado Commerce Server 2007?

Muchas gracias.

farmando

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Saturday, July 19, 2008 10:35 AM

Hola Fernando,

Gracias por los comentarios...pues es raro el error que te da...en su momento no tuve ningún problema para instalar la Beta3 de EF (entiendo que estés con esa versión)...con la Beta1 del SP1 de VS 2008 si que he tenido problemas cuando lo instalaba en una máquina con SQL Server 2008 (CTP6 o RC0), aunque finalmente he conseguido una instalación buena de todo...respecto a si necesitas Commerce Server 2007, pues la respuesta es que no...que yo sepa no hay ninguna dependencia entre este producto y VS 2008.

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, September 1, 2008 6:57 AM

Quisiera saber si entity framework podria trabajar con Oracle o Mysql sin problemas asi como lo hace con Sql Server.

Saludos

Alan

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, September 1, 2008 8:13 AM

Muy buenas Alan,

La respuesta es que sí, EF estará preparado para trabajar con esas BD's...puedes leer más información a este respecto en:

geeks.ms/.../actualizados-los-ejemplos-proveedores-de-terceros-de-ado-net-entity-framework.aspx

Un saludo

Jc's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Thursday, September 4, 2008 12:48 AM

public static void Eliminar (decimal pdecTemaID)

{

SEGContainer objDB;

Tema objTema;

objTema = new Tema ();

objTema.ID = pdecTemaID;

objDB = new SEGContainer();

//objDB.DeleteObject ((from T in objDB.Tema where T.ID == pdecTemaID select T).First ());

objDB.DeleteObject (objDB.GetObjectByKey (new EntityKey (objDB.DefaultContainerName + ".Tema", "ID", pdecTemaID)));

objDB.SaveChanges();

}

Edilberto Sánchez Forero

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Thursday, September 4, 2008 8:17 AM

Hola Edilberto,

¿Cuál es la pregunta o comentario con respecto a este código?

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, September 5, 2008 6:23 PM

Saludos

tengo instalado el sp1 de vsn 2008. mi interrogante como puedo devolver las entidades en un servicio web.

yodelmis@hotmail.com

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Sunday, September 7, 2008 12:46 AM

Probando multiples formas para borrar luego de resalizar pruebas me salen en varias ocasiones errores de objetos no encontrados o que su estado no les permite ser borrados o actualizados. Aun los codigos simples que basan todas las operaciones en consultas linq fallan el statemanager siempre molesta y no me permite hacer uso libre de las operaciopnes de actualizacion y borrado, solo la creacion me opera de maravilla que puede estarlo causando?

Edilberto

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, November 14, 2008 3:11 AM

Hola a todos, tengo una inquietud, como manejar los usuarios desde mi aplicacion, es decir permisos de usuario y password sabiendo que estoy trabajanod en tres capas presentacion, negocios y datos (donde tengo el EDM en este proyecto o capa) como configuro mi app.config ?

CAMILO

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, November 14, 2008 8:13 AM

Buenas CAMILO,

Pues toda la gestión de usuarios la puedes seguir haciendo como hasta ahora o bien crear una propia tuya usando las innovaciones del lenguaje. Me explico, si estás desarrollando en entorno web, sin duda la opción pasa por el proveedor que ya viene por ASP.NET y aquí da igual que tengas EF que no.

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Saturday, February 7, 2009 6:16 PM

Hola gracias por el intro.

tengo una gran pregunta.

con esta manera nueva de programar, donde se indica cuando se abre o cierra la conexion?

gracias

Israel

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Sunday, February 8, 2009 12:55 AM

Buenas Israel,

Pues lo indicas en el momento en el que haces una instancia del ObjectModel...realmente es el contexto de datos el que se encarga de abrir y cerrar tus conexiones a la BD subyacente.

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, March 20, 2009 9:36 PM

Buenos dias.

Estube trabajando con EF y a la hora de actualizar una tabla (agrege un campo) no se como actualizar el modelo para que me tome ese cambio.

Muchas gracias.

Agustin

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, March 23, 2009 8:12 AM

Muy buenas Agustin,

Lo que tienes que hacer es irte al Model Explorer de EF, pulsar sobre el nombre del modelo con el botón derecho del ratón y te aparecerá la opción Update from database. Con esto se te actualizará el modelo teniendo en cuenta el nuevo campo añadido.

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, May 15, 2009 9:38 PM

Hola quisiera saber cual es la diferencia entre el archivo edmx(entity framework) y el dbml de (Linq To Sql) y tambien como se manejan las transacciones en entity framework

Saludos

Alan

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, May 25, 2009 8:27 AM

Hola Alan,

El archivo EDMX describe un Entity Data Model, mientras que el DBML describe un DataBase Model...en el fondo ambos son modelos de entidades, pero las arquitecturas y filosofías de uso difieren.

En cuanto a las transacciones en EF, se manejan de la misma forma que en ADO.NET tradicional.

Un saludo

JC's

Juan Carlos González Martín

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, June 1, 2009 5:25 PM

Hola Fernando.

Ante todo gracias por la información que publicas en tu blog. Me ha sido de mucha utilidad.

Por otra parte. Me gustaría que me sacaras de una duda.

Yo creé un EDM de una base de datos SQL server que estoy utilizando para una aplicación. Sin embargo, dicha base de datos la tendré que migrar a Firebird (el cual también cuenta con un proveedor con soporte para Entitty Framework). ¿Tú crees que el modelo y el código generado con la primera base de datos podré emplearlos sin (muchos) problemas con otros proveedores (como MySQL, Firebird, PostgreSQL) simplemente cambiando la conexión? ¿O crees que hay muchas más implicaciones que un simple cambio de conexion y de Data Provider o connector?

Gracias de antemano por tu respuesta.

Saludos.

César

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, June 1, 2009 5:26 PM

Hola Fernando.

Ante todo gracias por la información que publicas en tu blog. Me ha sido de mucha utilidad.

Por otra parte. Me gustaría que me sacaras de una duda.

Yo creé un EDM de una base de datos SQL server que estoy utilizando para una aplicación. Sin embargo, dicha base de datos la tendré que migrar a Firebird (el cual también cuenta con un proveedor con soporte para Entitty Framework). ¿Tú crees que el modelo y el código generado con la primera base de datos podré emplearlos sin (muchos) problemas con otros proveedores (como MySQL, Firebird, PostgreSQL) simplemente cambiando la conexión? ¿O crees que hay muchas más implicaciones que un simple cambio de conexion y de Data Provider o connector?

Gracias de antemano por tu respuesta.

Saludos.

César

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Tuesday, June 2, 2009 9:00 AM

Por cierto, perdona, me equivoqué con tu nombre. Escribí Fernando en lugar de Juan Carlos

César

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Saturday, August 1, 2009 2:22 AM

tengo una duda.

si obtengo los datos de un objeto y a la vez este por navegacion se relaciona con n cantidad de registros, el objeto inicial tendra todos estos registros??

Mi duda es debido a que deseo serializar mi objeto para enviarlo mediante un Web Service

calc

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, August 28, 2009 9:06 PM

Necesito saber como hacer que el esquema sea variable, por ejemplo tengo 2 BD con las mismas tablas los mismos proc identicas,. pero cuando ejecuto la aplcacion no funciona por qe el archivo XML(edmx) tiene diferentes esqemas(Schema), no se halla una manera de qe pueda qe tome el esqema depensiendo la BD o hacer qe sea igual para todas

XML

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Wednesday, September 16, 2009 7:31 PM

Tengo un problema al momento de insertar una entidad, el error puntual es:

"System.Data.UpdateException: No se pudo actualizar EntitySet 'Entidadxxx' porque tiene DefiningQuery y no existe ningún elemento en el elemento que admita la operación actual."

Alguien tiene alguna idea?,

gracias

william

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, September 21, 2009 7:33 AM

Hola, interesante la manera de programar.

pero tengo dudas, por ejemplo esta nueva manera de trabajar con bases de datos

optimiza el rendimiento?

quiero decir, si es mejor esta manera de programar o es aun mejor seguir usando procedimientos almacenados?

por cierto, he estado buscando informacion por miles de lugares sobre como realizar las conexiones alas base de datos de sqlserver, pero he notado que ninguna menciona la optimizacion de las conexiones, quiero decir existen varias formas de conectarnos pero nunca mencionan cual es la mejor tomando en cuenta la cantidad de datos y usuarios conectandose.

gracias!!!

saludos

Israel G

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Wednesday, December 2, 2009 3:48 PM

Con respecto al comentario acerca del error:

"System.Data.UpdateException: No se pudo actualizar EntitySet 'Entidadxxx' porque tiene DefiningQuery y no existe ningún elemento en el elemento que admita la operación actual."

(He llegado hasta este blog buscándolo) lo acabo de resolver estableciéndole Primary Key a la tabla donde intentaba insertar/actualizar.

Seguramente habrá más errores que causan ese mensaje, pero a mí me pasaba eso.

(Sé que no es un foro, pero es el único lugar donde he visto que se hacía referencia a este mensaje... así que... por si llega otra persona con el mismo problema...)

Un saludo.

Tutty

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Tuesday, January 19, 2010 9:47 AM

Tutty, mil gracias por escribir tu solución, me acaba de ahorrar varias horas de trabajo hasta que hubiese encontrado el error :)

Jon

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Friday, March 12, 2010 9:24 PM

Gracias Tutty.

También me ha ayudado tu solución.

ivan

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Sunday, September 5, 2010 7:49 PM

hola mi sigte consulta es,yo tengo que hacer una aplicacion utilizando visual studio 2010 y sql 2005 ya hice el mapeo de la base y ahora estoy trabajando con windows forms quisiera saber como trabajar con esos campos ya qye dejo trabajar con entity framework linq y controles infragistics 2010 podria ayudarme ya sea con 1 pagina de un ejemplo simple para tener 1 idea de este funcionamiento o quiza ustedes con 1 manera facil de enteneder ya que recien empiezo en esto

julian

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Thursday, May 5, 2011 6:22 AM

Hola muy buena publicación

con respecto a la conexión: se abre la conexión a la base de datos en el SaveChanges()?

JaviMarciano

# re: ADO.NET Entity Framework: LINQ To Entities, Entity SQL y Entity Services (I)@ Monday, June 6, 2011 2:12 PM

Muchisimas gracias por tan buena explicacion y ejemplos. Estoy por comenzar a trabajar en una empresa y me dieron el "manualsito" del entity framework para que lo lea. Con esto en mente ya tengo mas claro el panorama. Nuevamente muchas gracias

Ramiro