Tarea BD
Tarea BD
Código: 120879
La Deep Web o en español como Internet Profunda. Se refiere a sitios con fines delictivos o
contenido ilegal, y a sitios "comerciales" donde los usuarios pueden adquirir bienes o servicios
ilícitos. En otras palabras, la red profunda abarca todo lo que hay bajo la superficie y sigue
siendo accesible con el software adecuado, incluida la red oscura. También hay un tercer
término, "Internet oscuro" ("Dark Internet"), que hace referencia a sitios y bases de datos que
no están disponibles a través de conexiones públicas de Internet, incluso si se utiliza Tor. A
menudo, las empresas o los investigadores utilizan sitios de Internet oscuro para mantener en
privado la información confidencial.
- REALIZAR UNA LISTA DE ORMs (MÍNIMO 4) ELEGIR UNO DE ELLOS Y DESCRIBIR COMO
FUNCIONA Y MOSTRAR UN EJEMPLO E INCLUIRLO NO ES NECESARIO IMPLEMENTARLO
PUEDEN USAR UNO QUE YA ESTE EN LA WEB Y EXPLICARLO.
Entity Framework (EF) es un asignador relacional de objetos (ORM) que permite a los
desarrolladores de .NET trabajar con datos relacionales utilizando objetos específicos
del dominio. Elimina la necesidad de la mayoría del código de acceso a datos que los
desarrolladores generalmente necesitan escribir.
Lo primero que necesitamos como prerequisito es tener una base de datos, en mi caso
una en SQL Server con la siguiente estructura:
Lo primero es abrir la mejor IDE del mundo, nuestro Visual Studio 2010 . Archivo,
nuevo, proyecto y seleccionamos un proyecto del tipo aplicación de Consola. Ahora
bien, algo que se debe tener en cuenta antes de seguir, es que un modelo de Entity
Framework es n elemento y NO un tipo de proyecto, por esto el siguiente paso sera
agregar un nuevo elemento a nuestro proyecto de Consola, Click derecho, agregar,
nuevo elemento, en la categoría Data seleccionamos el tipo ADO.NET Entity Data
Model:
Al pulsar Add, nos saldrá un asistente de conexión. En la primera se nos da la opción de
crear un modelo conceptual a partir de un modelo de base de datos, y la otra crear un
modelo vacío que luego podremos enviar a una base de datos, esto es lo que se conoce
como Model First [no lo cubriremos en esta entrada]. la técnica que usaremos en esta
entrada se conoce como Database First.
En esta ventana especificamos la conexión a la base de datos donde estará nuestro
modelo físico, en mi caso quedaría así:
Antes de continuar seria bueno fijarnos en ciertas cosillas, la primera que podemos notar
es que Entity Framework nos ha agregado automáticamente un archivo de
configuración y en su interior nos ha agregado un Connection String con una forma
muy peculiar, algo como:
Si nos fijamos detenidamente vemos que en esta se define varios atributos, el primero y
muy importante es el de metadata quien es el que define de que se compondrá nuestro
edmx, por supuesto de los tres archivos XML de los que hablamos en el post anterior
(CSDL, SSDL y MSL), El siguiente atributo es el proveedor especifico con el que
realizamos esta conexión (en mi caso es el SQLClient), el Servidor donde se encuentra
la BD, la BD, el usuario y contraseña, la propiedad multipleactiveresultsets que nos
indica si se pueden asociar varios conjuntos de resultados activos a la conexión
asociada. y por ultimo tenemos el providerName que como ya habíamos dicho en el
post anterior el provider de Entity Framework se llama EntityClient. Otro aspecto
importante a resaltar es que se ha agregado una referencia al ensamblado
System.Data.Entity.
Ahora que tenemos un poco mas claro el porque de los estragos que ha causado nuestro
modelo en la apariencia de la solución, podemos empezar a picar código.
En el método main de nuestra app agregaremos una sentencia using (porque es auto-
administrable ,etc, etc) y dentro de este creamos una instancia de nuestro modelo, así:
class Program
{
static void Main(string[] args)
{
using (EFDemoEntities context = new EFDemoEntities())
{
}
}
}
Como dije en el primer post de esta serie, Entity Framework nos ahorra el tener que
mapear a mano nuestras entidades a entidades de dominio, y expone automáticamente
muchos métodos que ayudan a las operaciones CRUD.
Para agregar un elemento a la entidad Pais, debemos crear un objeto de este tipo,
agregarlo al contexto y guardar los cambios, así:
class Program
{
static void Main(string[] args)
{
using (EFDemoEntities context = new EFDemoEntities())
{
context.Pais.AddObject(new Pais{Nombre = "Colombia"});
context.SaveChanges();
}
}
}
Ahora bien si quisiéramos agregar un objeto HIJO es decir, una ciudad, podemos usar
las propiedades de navegación que nos da Entity Framework cuando detecta llaves
foráneas, así que seria cuestión de definir un valor a esta propiedad, así:
class Program
{
static void Main(string[] args)
{
using (EFDemoEntities context = new EFDemoEntities())
{
Pais pais = new Pais { Nombre = "Bolivia" };
Ciudad ciudad = new Ciudad{Nombre = "La Paz"};
pais.Ciudad.Add(ciudad);
context.Pais.AddObject(pais);
context.SaveChanges();
}
}
}
Para eliminar un dato con Entity Framework, es necesario primero recuperarlo y luego
si eliminarlo, algo así:
class Program
{
static void Main(string[] args)
{
using (EFDemoEntities context = new EFDemoEntities())
{
Pais pais = (from p in context.Pais
where p.Nombre == "Colombia"
select p).FirstOrDefault();
context.Pais.DeleteObject(pais);
context.SaveChanges();
}
}
}
Un escenario como el del segundo objeto que agregamos, que tiene un hijo (País –
Ciudad) se requiere eliminar todos sus hijos y luego si finalmente el Padre, de lo
contrario obtendremos una excepción. Otra alternativa, es habilitar la eliminación en
cascada, se puede hacer directamente sobe la relación de las tablas en la base de datos o
evaluar lo que en esta liga se propone.