domingo, 1 de noviembre de 2015

Empezar a utilizar .Net Entity Framework - 2

Después de, en el artículo anterior, haber creado el proyecto Windows Forms Application y haber generado el modelo de datos de la base de datos, vamos a ver cómo podemos acceder a la base de datos a través del modelo, utilizando un pequeño ejemplo ilustrativo.

En el formulario Form1 creado automáticamente cuando se crea el proyecto Windows Forms Application, vamos a crear una comboBox arrastrando desde la caja de herramientas.




En el separador de propriedades (Properties) cambiamos el nombre a viaturasBox1





Después, añadimos un controlador de eventos para el evento Load de Form1 (haga doble clic en el fondo del formulario Form1), y creamos el método correspondiente al event handler (Form1_Load()):

namespace ejemploEntityFramework
{
    public partial class Form1 : Form
    {
        carRentEntities dbContext;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dbContext = new carRentEntities();

            viaturasBox1.DataSource = dbContext.Viaturas;

            viaturasBox1.DisplayMember = "matricula";
            viaturasBox1.ValueMember = "Id";
        }

... ... ... ... ... ...

Este método va a llenar la ComboBox viaturasBox1 cuando el Form1 empezar.
Vamos a ver cómo se hace esto con más detalle: 

   - La línea
            carRentEntities dbContext;
     declara la variable dbContext del tipo carRentEntities, que corresponde al modelo de datos creado.

   - La línea
            dbContext = new carRentEntities();
     crea el objeto con el modelo de datos, responsable de hacer el mapeo con la base de datos, y lo asigna a la variable dbContext.

   - La línea
            viaturasBox1.DataSource = dbContext.Viaturas;
     asocia Viaturas, en el contexto creado anteriormente, a la propiedad DataSource del comboBox, lo que indica que está ahí para leer datos para la comboBox.

   - Las líneas
            viaturasBox1.DisplayMember = "matricula";
           
viaturasBox1.ValueMember = "Id";

     identifican lo atributo de Viatura que debe consignarse en comboBox (propiedad DisplayMember) y lo que debe ser devuelto como propiedad selectedValue de comboBox cuando se selecciona un coche (ValueMember).

Este extracto de código lee todas las líneas de la tabla de coches (Viatura) y rellena la comboBox.

Si, por ejemplo, la intención era para filtrar los datos por cualquier criterio podríamos utilizar LINQ para lo hacer, antes de asociar el resultado a la ComboBox.
Por ejemplo, la línea
            viaturasBox1.DataSource = dbContext.Viaturas;


podría ser sustituida por:

            List<Viatura> listaViaturas;
            IQueryable<Viatura> viaturasQuery = from v in dbContext.Viaturas
                                                where v.marca.Equals("SEAT")
                                                select v;
            listaViaturas = viaturasQuery.ToList<Viatura>();
            viaturasBox1.DataSource = listaViaturas;


En este caso, la comboBox se llena solamente con los coches cuya marca era "SEAT".

En un próximo artículo veremos cómo actualizar la base de datos utilizando el modelo creado con Entity Framework.

Otros Artículos Relacionados:
    - ADO.Net Entity Framework
    - Empezar a utilizar .Net Entity Framework - 1


No hay comentarios:

Publicar un comentario