Chapter 3: A problem for counterfactual theories of causation
3.5 Schaffer’s account of the hard cases
10. En el evento Load del Formulario ejecutamos un objeto Command para recuperar los registros de tb_clientes, almacenándolos en el DataReader.
11. Grabe el proyecto y ejecute el aplicativo para realizar las pruebas.
LABORATORIO 12.2
CONSULTA DE PEDIDOS ENTRE DOS FECHAS
En este escenario vamos a consultar los pedidos entre dos fechas. Al seleccionar las fechas en los controles ComboBox, listar los pedidos entre las fechas seleccionadas. 1. Agregue un formulario al proyecto, diseñe el formulario tal como se muestra.
2. Importe la librería para trabaja con la librería Objects.
3. Defina la variable de contexto a nivel Formulario.
Dim nombre As String = Me.txtnombre.Text + "%" 'definir la instancia del modelo
Dim db As New DBVentasEntities
'definir la consulta de productos a través del object query Dim lista As ObjectQuery(Of tb_productos) = db.CreateQuery( _ Of tb_productos)("Select VALUE p From tb_productos as p Where p.NombreProducto LIKE '" + nombre + "'")
'listar
Me.DataGridView1.DataSource = lista.ToList
Imports System.Data.Objects
172 172 172 172
4. En el evento Load del formulario, cargue las fechas en los ComboBoxes.
5. Defina, en el evento Click del botón Consulta, el proceso para listar los pedidos entre dos fechas seleccionadas por ComboBoxes.
6. Grabe el proyecto y ejecute la aplicación.
LABORATORIO 12.3
ACTUALIZACION DE CLIENTES
En este escenario vamos a actualizar los datos de los clientes utilizando los objetos del Modelo de Entidad de Datos DBVentasEntities.
1. Agregue un formulario al proyecto, diseñe el formulario tal como se muestra.
Control Nombre Propiedad Valor
Button BtnLimpiar Text LIMPIAR
Button BtnAgregar Text AGREGAR
Button BtnModificar Text MODIFICAR Button BtnEliminar Text ELIMINAR 'configurar el ComboBox1 y ComboBox2
Me.ComboBox1.DataSource = db.tb_pedidoscabe Me.ComboBox1.DisplayMember = "FechaPedido" Me.ComboBox1.ValueMember = "FechaPedido" Me.ComboBox2.DataSource = db.tb_pedidoscabe Me.ComboBox2.DisplayMember = "FechaPedido" Me.ComboBox2.ValueMember = "FechaPedido"
'definir la consulta de productos a través del object query Dim lista As ObjectQuery(Of tb_pedidoscabe) = _
db.CreateQuery(Of tb_pedidoscabe)( _
"Select VALUE p From tb_pedidoscabe as p " + _ "Where p.FechaPedido BetWeen @f1 AND @f2", _
New ObjectParameter("f1", ComboBox1.SelectedValue), _ New ObjectParameter("f2", ComboBox2.SelectedValue)) 'listar
Label Label1 Text Mantenimiento de Clientes
Label Label2 Text Codigo
Label Label3 Text Nombre
Label Label4 Text Direccion
Label Label5 Text Pais
Label Label6 Text Fono
TextBox TxtCodigo TextBox TxtNombre TextBox TxtDireccion TextBox TxtFono ComboBox ComboBox1 DataGridView DataGridView1
2. Defina la instancia de DBVentasEntities a nivel formulario.
3. En el evento Load del formulario, configura el ComboBox con la entidad tb_paises y liste los clientes en el DataGridView1.
4. En el botón grabar se procederá a Grabar un nuevo cliente a la entidad tb_clientes, actualizando los datos en el Contexto DBVentasEntities DB.
5. En el botón modificar se procederá a actualizar los datos de un cliente seleccionado, observe que los datos se actualiza en la entidad tb_clientes.
Private DB As New DBVentasEntities
'configura el combobox con la entidad tb_paises Me.ComboBox1.DataSource = DB.tb_paises
Me.ComboBox1.DisplayMember = "NombrePais" Me.ComboBox1.ValueMember = "idpais"
'listar los clientes en el DataGridView1
Me.DataGridView1.DataSource = DB.tb_clientes.ToList
'definir el tb_clientes
Dim cliente As tb_clientes = tb_clientes.Createtb_clientes( _ Me.txtcodigo.Text, Me.txtnombre.Text, Me.txtdireccion.Text, _ Me.ComboBox1.SelectedValue, Me.txtfono.Text)
'añadir cliente a la entidad tb_clientes DB.AddTotb_clientes(cliente)
'actualizar los cambios Try DB.SaveChanges() Me.DataGridView1.DataSource = DB.tb_clientes.ToList Catch ex As UpdateException MessageBox.Show(ex.Message) End Try
'asigne el objeto tb_cliente seleccionado del DataGridView1 Dim cliente As tb_clientes = _
DB.tb_clientes.ToList.ElementAt(DataGridView1.CurrentRow.Index) 'asigne los datos a actualizar
cliente.NombreCia = Me.txtnombre.Text cliente.Direccion = Me.txtdireccion.Text cliente.idpais = Me.ComboBox1.SelectedValue cliente.Telefono = Me.txtfono.Text
'actualizar los cambios DB.SaveChanges()
174 174 174 174
6. En el botón eliminar se elimina el objeto cliente seleccionado desde el DataGridView1 y se actualizará en el contexto DBVentasEntities.
7. En el evento CellClick del DataGridView1, visualizamos los datos del registro al seleccionar el Cliente.
8. Grabe y ejecute la aplicación para comprobar sus procesos. Dim cliente As tb_clientes = DB.tb_clientes.Where( _ "c.idcliente='" + txtcodigo.Text + "'").First
DB.DeleteObject(cliente) DB.SaveChanges() Me.DataGridView1.DataSource = DB.tb_clientes.ToList Me.txtcodigo.Text = DataGridView1.CurrentRow.Cells(0).Value Me.txtnombre.Text = DataGridView1.CurrentRow.Cells(1).Value Me.txtdireccion.Text = DataGridView1.CurrentRow.Cells(2).Value Me.txtfono.Text = DataGridView1.CurrentRow.Cells(4).Value ComboBox1.SelectedValue=DataGridView1.CurrentRow.Cells(3).Value
Autoevaluación
1. ¿Qué es el Servicio de objetos?
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________
2. ¿Qué es el Object Context?
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________
3. Explique la funcionalidad de la clase Object Query.
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________
4. Explique las operaciones de actualización del ObjectQuery.
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________
5. ¿Cómo salvamos los objetos y manejamos la concurrencia?
__________________________________________________________________ __________________________________________________________________ __________________________________________________________________ __________________________________________
176 176 176 176
Resumen
Los Servicios de Objeto materializan datos devueltos como objetos, y actualizan cambios de objeto a la fuente de datos. Esto también proporciona instalaciones de rastrear cambios, enlazar objetos al origen de datos (data source).
ObjectContext es la puerta de enlace a EntityConnection para Servicios de objeto. Ofrece acceso al EDM a través del EntityConnection subyacente.
Por ejemplo, puede tener acceso a las entidades a través de ObjectContext, interrogar a ObjectContext para averiguar información acerca del estado de objetos y crear consultas de ObjectQuery<T> con el método CreateQuery.
La clase genérica ObjectQuery representa una consulta que retornar una colección de cero a más objetos de entidad tipeadas. Un ObjectQuery siempre pertenece a un ObjectContext. Este contexto prove la conexión y la información de la metadata que es requerido para definir y ejecutar una consulta.
Cuando quieres agregar data en el origen de datos, debes crear una instancia del tipo de la Entidad y añadir el objeto al ObjectContext. Antes de agregar un nuevo objeto, debes asignar, primero, a todas las propiedades que no soporten valores
null.
Los Object Services realizar cambios a los objetos que son adjuntados al ObjectContext utilizando una instancia del IEntityChangeTracker.
Las consultas retornan objetos en el estado Unchanged. El Modelo de entidad de datos ejecuta métodos para realizar los cambios asignando a cada propiedad de la entidad para crear la lógica de negocio. Esta capacidad se conoce como LINQ to Entities.
El método DeleteObject del modelo ObjectContext para especificar el objeto de la eliminación. La fila no es borrada desde el origen de datos hasta ejecutar el método SaveChanges.
Si desea conocer mas acerca del tema, visite las siguientes paginas: http://msdn.microsoft.com/es-ar/library/bb738470(en-us).aspx
Página referente a las actualizaciones de los servicios de objetos http://geeks.ms/blogs/ciin/archive/2008/01/25/ado-net-entity-framework-
linq-to-entities-entity-sql-y-entity-services-i.aspx
Página referente al los servicios de objetos y entidades http://msdn.microsoft.com/es-es/magazine/cc507640.aspx