Documentos de Académico
Documentos de Profesional
Documentos de Cultura
-1-
-2-
-3-
-4-
Figure 17-1. The events list in Designer Figure 17-2. Event handler creation in
mode Designer mode
4. . Ya se ha generado el controlador de eventos button1_Click, su plantilla estar
disponible en la vista Cdigo. Cambie a la vista de cdigo del formulario Windows,
llamado Events.cs, para ver el controlador de eventos y prepararse para escribir la
funcionalidad para el evento Click (vase la figura 17-3).
-5-
Cmo funciona.
El evento ms comunes que controla un botn, que tambin pasa a ser el
predeterminado, es el evento Click. En este ejemplo, escribe cdigo Flash un cuadro de
mensaje cuando un usuario hace clic en el botn en el formulario:
MessageBox.Show("Yo he hecho clic en ")
Prubelo : trabajar con eventos de movimiento del ratn.
En este ejercicio, ver los eventos asociados con los movimientos del ratn. Para
probarlos, siga estos pasos:
1.vaya al explorador de soluciones y abra el formulario de eventos en la vista Diseo.
2 Arrastre un control TextBox al formulario de Windows slo bajo el control de
button1. Seleccione el control TextBox, y ver una flecha en la frontera de la parte
superior derecha del control; Esta flecha se llama una etiqueta inteligente.
Note La funcin de etiqueta inteligente est disponible con algunos controles. El
objetivo principal de esta funcin es proporcionar a los desarrolladores especificar un
conjunto de acciones para un control en tiempo de diseo una forma generalizada.
Haga clic en el icono de un componente etiqueta inteligente permite seleccionar de una
lista de acciones disponibles desde el panel de etiquetas inteligentes.
3. Haga clic en la etiqueta inteligente, y un pequeo panel aparecer mostrando una
casilla de verificacin Habilitar la propiedad de Multi - lnea (vase la figura 17-4)
.
-6-
Figure 17-5. Setting the MultiLine property using the Smart Tag of the TextBox control
5 Ahora haga clic fuera del TextBox en el propio formulario para conservar el nuevo
tamao de que la propiedad MultiLine ha dado para el cuadro de texto por defecto. Si lo
desea, tambin puede utilizar los controles (los tres pequeos rectngulos en cada
lnea de frontera) para cambiar el tamao del control TextBox.
Tip Tambin se puede establecer la propiedad MultiLine de un cuadro de texto sin
utilizar la funcin de etiqueta inteligente. Puede establecer directamente la propiedad
MultiLine en True, que se establece en False de forma predeterminada.
6. Arrastre un control de etiqueta de la caja de herramientas para a continuacin el
cuadro de texto y establezca su propiedad AutoSize en False. Tambin, establecer
propiedad de tamao de fuente de la etiqueta a 12 y la propiedad TextAlign para
MiddleCenter. Ahora se ver el formulario de eventos como el que se muestra en la
figura 17-6.
-7-
-8-
-9-
Cmo funciona.
Con el evento KeyDown, reconoce que tecla en un momento determinado en el
tiempo. El condicional si declaracin le ayuda a rastrear qu tecla se ha presionado y
mostrar el mensaje en el control de etiqueta:
If e.Alt = True Then
Label1.Text = "The Alt key has been pressed"
Else
If e.Control = True Then
Label1.Text = "The Ctrl key has been pressed"
Else
If e.Shift = True Then
Label1.Text = "The Shift key has been pressed"
End If
El evento KeyUp reconoce siempre la tecla que se presion ha sido lanzada y como
resultado muestra el mensaje apropiado en el control de etiqueta:
If e.Alt = False Or e.Control = False Or e.Shift = False Then
Label1.Text = "The Key has been released"
End If
Intntelo : trabajar con eventos de pulsacin de tecla del teclado.
En este ejercicio, trabajar con el evento KeyPress. El evento KeyPress obtiene en
accin cuando el control asociado recibe la entrada en el formof una pulsacin de tecla;
Si la clave tiene un valor ASCII, se provoca el evento KeyPress. Para probar este
evento, siga estos pasos:
1. Navigate to Solution Explorer and open the Events.vb form in Design view.
2. Select the TextBox control, open the Properties window, and click the Events button.
In the events list, double-click in the text area of the KeyPress event. This will simply
create an event handler for the KeyPress event.
1. Vaya al explorador de soluciones y abra el formulario Events.vb en la vista
Diseo.
2. 2. Seleccione el control de cuadro de texto, abra la ventana Propiedades y haga
clic en el botn eventos. En la lista de eventos, haga doble clic en el rea de
texto del evento KeyPress. Simplemente, esto crear un controlador de eventos
para el evento KeyPress.
-10-
-11-
-12-
significado un tipo de datos que puede manejar grandes cantidades de datos (amorfos)
y documentacin de SQL Server utiliza BLOB como un trmino genrico para tipos de
datos y datos de gran tamao.
Almacenamiento de imgenes en una base de datos.
Vamos a empezar creando una tabla de base de datos para almacenar imgenes y, a
continuacin, cargar algunas imgenes en ella. Podr utilizar imgenes pequeas pero
utilice VARBINARY(MAX) para almacenarlos. En los ejemplos, demostraremos
utilizando imgenes en C:\Documents and Settings\Toshiba jose\mis
documentos\Visual Studio 2008\Projects\Chapter18\Image; puede utilizar la ruta de la
ubicacin donde tiene algunas imgenes en su PC.
Pruebe: Cargar datos binarios de imagen de archivos.
En este ejemplo, a escribir un programa que crea una tabla de base de datos y, a
continuacin, almacena las imgenes en ella.
1. Create a new Console Application project named Chapter18. When Solution Explorer
opens, save the solution.
1. Crear un nuevo proyecto de aplicacin de consola denominado Chapter18.
Cuando se abre el explorador de soluciones, guardar la solucin.
2.
3. Cambie el nombre del proyecto de Chapter18 a LoadImages. Cambiar el nombre
de Module1.vb a LoadImages.vb y reemplazar su cdigo con el cdigo en la lista
de 18-1.
4.
Listing 18-1. LoadImages.vb
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
'Namespace LoadImages
Friend Class LoadImages
Private imageFileLocation As String = _
"C:\Documents and Settings\Toshiba User" & _
"\My Documents\Visual Studio 2008\Projects\Chapter18\Image\"
Private imageFilePrefix As String = "painting-almirah"
'Private imageFileLocation As String = "e:\Datos\"
'Private imageFilePrefix As String = "misti"
Private numberImageFiles As Integer = 1
Private imageFileType As String = ".jpg"
Private maxImageSize As Integer = 10000
Private conn As SqlConnection = Nothing
Private cmd As SqlCommand = Nothing
Shared Sub Main()
'Sub Main()
'Dim loader As New LoadImages()
Dim loader As New LoadImages()
Try
-13-
-14-
-15-
-16-
-17-
-18-
-19-
"Integrated Security=True;Database=tempdb")
imageCommand = New SqlCommand("" & ControlChars.CrLf & _
"select" & ControlChars.CrLf & "imagefile," & _
ControlChars.CrLf & "imagedata" & ControlChars.CrLf & _
"from" & ControlChars.CrLf & "imagetable" & _
ControlChars.CrLf & "", imageConnection)
' Open connection and create data reader
imageConnection.Open()
imageReader = imageCommand.ExecuteReader()
End Sub
Public Function GetImage() As Bitmap
Dim ms As New MemoryStream(imageBytes)
Dim bmap As New Bitmap(ms)
Return bmap
End Function
Public Function GetFilename() As String
Return imageFilename
End Function
Public Function GetRow() As Boolean
If imageReader.Read() Then
imageFilename = CStr(imageReader.GetValue(0))
imageBytes = CType(imageReader.GetValue(1), Byte())
Return True
Else
Return False
End If
End Function
Public Sub EndImages()
' Close the reader and the connection.
imageReader.Close()
imageConnection.Close()
End Sub
End Class
End Namespace
4 Insertar el cdigo en la lista de 18-3 en DisplayImages.vb antes de llamar a
InitializeComponent(). DisplayImages.vb se puede acceder haciendo clic en
DisplayImages.vb y seleccione Ver cdigo, que le llevar a la vista Cdigo.
Listing 18-3. Initializing Image Display in the DisplayImages class
images = New DisplayImage.Images()
If images.GetRow() Then
Me.TextBox1.Text = images.GetFilename()
Me.PictureBox1.Image = CType(images.GetImage(), Image)
Else
Me.TextBox1.Text = "DONE"
Me.PictureBox1.Image = Nothing
End If
5. Insertar el cdigo en la lista de 18-3 en el controlador de eventos button1_Click.
Puede acceder al controlador de eventos button1_click, desplcese a la vista de diseo
de la forma de DisplayImages y haga doble clic en el control de botn.
-20-
-21-
-22-
-23-
-24-
-25-
-26-
-27-
-28-
bucle en el conjunto de resultados (pero aqu hay slo una fila), obtener el nombre del
archivo de la tabla con GetString() e imprimir para mostrar el archivo que se muestra. A
continuacin, se llama GetChars() con una matriz de caracteres null para obtener el
tamao de la columna VARCHAR (Max):
If dr.Read() Then
' Get file name
textFile = dr.GetString(0)
Console.WriteLine("------ start of file:")
Console.WriteLine(textFile)
textSize = dr.GetChars(1, 0, Nothing, 0, 0)
Console.WriteLine("--- size of text: {0} characters -----", _
textSize)
Console.WriteLine("--- first 100 characters in text -----")
charsRead = dr.GetChars(1, 0, textChars, 0, 100)
Console.WriteLine(New String(textChars))
Console.WriteLine("--- last 100 characters in text -----")
charsRead = dr.GetChars(1, textSize - 100, textChars, 0, 100)
Console.WriteLine(New String(textChars))
Return True
Else
Return False
En lugar de imprimir todo el archivo, se mostrarn los primeros 100 bytes mediante
GetChars() para extraer una subcadena. Hacer lo mismo con los ltimos 100
caracteres.
De lo contrario, este programa es como cualquier otro que recupera y muestra los
datos de carcter de base de datos.
RESUMEN
En este captulo, explor texto y tipos de datos binarios de SQL Server. Tambin se
practican almacenar y recuperar datos binarios y de texto utilizando los tipos de datos
de objetos grandes de SQL Server y ADO.NET.
En el siguiente captulo, aprender acerca de la caracterstica ms emocionante
de.NET 3.5: Language Integrated Query (LINQ).
USANDO LINQ
Software de escritura significa que tienes que tener una base de datos en el back-end,
y la mayora del tiempo va a escribir consultas para recuperar y manipular datos. Cada
vez que alguien habla de datos, tendemos a pensar en la informacin contenida en una
base de datos relacional o en un documento XML.
El tipo de acceso a los datos que tenamos antes de que la versin de.NET 3.5 slo fue
destinado o limitada al acceso a los datos que residen en orgenes de datos
tradicionales como los dos que acabo de mencionar. Pero con el lanzamiento de.NET
3.5, que tiene el lenguaje integrado consulta (LINQ) incorporado en l, ahora es posible
tratar los datos que residen fuera de las casas tradicionales de almacenamiento de
informacin. Por ejemplo, puede consultar un tipo genrico de List() que contiene
-29-
valores unos cien entero y escribir una expresin de LINQ para recuperar el
subconjunto que cumple el criterio por ejemplo, par o impar.
La funcin LINQ, como han dado cita, es una de las principales diferencias entre.NET
3.0 y.NET 3.5. LINQ es un conjunto de caractersticas de Visual Studio 2008 que
ampla las capacidades de consulta poderoso en la sintaxis del lenguaje de C# y
VB.NET.
LINQ presenta un enfoque estndar, unificado y fcil de aprender para consultar y
modificar datos y puede ser extendido para admitir potencialmente cualquier tipo de
almacn de datos. Visual Studio 2008 incluye ensamblados de proveedor LINQ que
permiten el uso de las consultas LINQ con diversos tipos de orgenes de datos,
incluidos datos relacionales, XML y estructuras de datos en memoria.
En este captulo, analizaremos los siguientes:
Introduction to LINQ.
Architecture of LINQ.
LINQ project structure.
Using LINQ to Objects.
Using LINQ to SQL.
Using LINQ to XML.
Introduccin a LINQ.
LINQ es una innovacin que Microsoft con el lanzamiento de Visual Studio 2008 y.NET
Framework versin 3.5 que promete revolucionar la forma en que los desarrolladores
han estado trabajando con datos antes del lanzamiento de.NET 3.5. Como
mencionamos anteriormente, LINQ introduce el concepto estndar y unificado de
consultar diversos tipos de orgenes de datos en la gama de bases de datos
relacionales, documentos XML y estructuras de datos incluso en memoria. LINQ
soporta todos estos tipos de almacenes de datos con la ayuda de las expresiones de
consulta LINQ de construcciones de primera clase de lenguaje de Visual Basic 2008.
LINQ ofrece las siguientes ventajas:
LINQ ofrece una sintaxis comn para consultar cualquier tipo de origen de datos; por
ejemplo, se puede consultar un documento XML de la misma manera como consultar
una base de datos SQL, un ADO.Conjunto de datos neto, una coleccin en memoria o
cualquier otro origen de datos remoto o local que ha elegido para conectarse y acceder
mediante LINQ.
Tiempo de desarrollo velocidades LINQ por capturar muchos errores en tiempo de
compilacin, incluyendo IntelliSense y soporte de depuracin.
Expresiones de consulta LINQ (a diferencia de los tradicionales instrucciones SQL)
son inflexible.
Note Expresiones inflexible garantizar el acceso a valores como el tipo correcto en
tiempo de compilacin y as evitar errores de falta de correspondencia de tipo
capturados cuando se compila el cdigo en lugar de en tiempo de ejecucin.
Como se explica en el captulo 2.NET 3.5 ensamblados son poco verde y pueden
encontrarse en la carpeta C:\Program programa\Reference
-30-
-31-
-32-
Nota LINQ sobre el.NET Compact Framework incluye un subconjunto de las funciones
LINQ escritorio. Una de las diferencias entre LINQ en el.NET Framework y LINQ en
el.NET Compact Framework es que en el.NET Compact Framework, SQOs slo son
compatibles. Se admiten LINQ para conjuntos de datos y LINQ to DataTables y LINQ to
XML tambin se admite excepto para extensiones de XPath.
En este captulo, trabajaremos con las tres tcnicas LINQ a objetos de LINQ to SQL y
LINQ para conjuntos de datos, ya que estn estrechamente relacionada con la
programacin de base de datos de Visual Basic 2008 que hemos cubierto en este libro.
Estructura del proyecto LINQ.
Visual Studio 2008 permite utilizar las consultas LINQ y para crear un proyecto LINQ,
siga estos pasos:
1 abrir Visual Studio 2008 y seleccione Archivo nueva proyecto.
2.En el cuadro de dilogo nuevo proyecto que aparece, de forma predeterminada.NET
Framework 3.5 es elegido en la lista de disponibles.Versiones de NET Framework
compatibles con Visual Studio 2008. Seleccione el tipo de proyecto desea que la
funcin LINQ para ser parte de. Por ejemplo, utilizaremos una aplicacin de consola de
proyectos (vase la figura 19-2).
3. Type the name Chapter19 for the chosen project and click OK. The new Console
Application
project named Chapter19 will appear. In a Visual Basic Console Application, the
LINQ namespaces are added under the References folder in Solution Explorer, as
shown in Figure 19-3.
Escriba el nombre de Chapter19 para el proyecto seleccionado y haga clic en Aceptar.
Aparecer el nuevo proyecto de aplicacin de consola denominado Chapter19. En una
aplicacin de consola de Visual Basic, se agregan a los espacios de nombres LINQ
bajo la carpeta de referencias en el explorador de soluciones, como se muestra en la
figura 19-3.
Ahora est listo para trabajar con un proyecto LINQ, y todo lo que necesita hacer es
agregar la funcionalidad de cdigo y los espacios de nombres necesarios para el
proyecto y probar la aplicacin. Vamos a comenzar a usar LINQ.
-33-
-34-
conjuncin con.NET Framework APIs que devuelven colecciones. Por ejemplo, puede
utilizar las clases System.Reflection para obtener informacin acerca de los tipos en un
ensamblado especificado y, a continuacin, filtrar los resultados mediante LINQ. O
bien, puede importar archivos de texto en las estructuras de datos enumerables y
comparar el contenido a otros archivos, extraer lneas o partes de lneas, agrupar
lneas coincidentes de varios archivos en una nueva coleccin y as sucesivamente.
son ms conciso y legible, especialmente cuando varias condiciones de filtrado.
Proporcionan capacidades de agrupacin, pedidos y potente filtrado con un mnimo
de cdigo de la aplicacin
. Que puede ser portados a otras fuentes de datos con poca o ninguna modificacin.
En general, cuanto ms compleja es que la operacin que desea realizar en los datos,
mayor ser el beneficio que se dar cuenta usando LINQ como opuesto a tcnicas
tradicionales de iteracin.
Pruebe: Codificacin un Simple LINQ a objetos de consulta.
En este ejercicio, utilizar LINQ a objetos para recuperar algunos nombres de una
matriz de cadenas.
1. Right-click the Chapter19 project in the Chapter19 solution, select the Rename
option,
and rename the project to LinqToObjects. Rename Module1.vb to LinqToObjects.vb.
Replace the code in LinqToObjects.vb with the code in Listing 19-1.
Haga clic derecho en el proyecto de Chapter19 en la solucin de Chapter19,
seleccione la opcin Cambiar nombre y cambie el nombre del proyecto a
LinqToObjects. Cambiar el nombre de Module1.vb a LinqToObjects.vb. Reemplace el
cdigo en LinqToObjects.vb con el cdigo en el listado de 19-1.
Listing 19-1. LinqToObjects.vb
Imports System
Imports System.Text
Imports System.Linq
Imports System.Collections.Generic
'Namespace Chapter19
Class LinqToObjects
Shared Sub Main(ByVal args As String())
Dim names As String() = {"James Huddleston", "Pearly", _
"Rupali Agarwal", "Fabio Claudio", "Vamika Agarwal", _
"Sofia Merchant", "Vidya Vrat Agarwal"}
'Dim name As String
Dim namesOfPeople As IEnumerable(Of String) = _
From name In names _
Where (name.Length <= 16) _
Select name
For Each name In namesOfPeople
Console.WriteLine(name)
Next
Console.ReadLine()
End Sub
-35-
End Class
'End Namespace
2. Ejecute el programa pulsando Ctrl + F5, y ver los resultados mostrados en la figura
19-4.
Figure 19-4. Retrieving names from a string array using LINQ to Objects
Cmo funciona.
Declarar una matriz de cadena llamada nombres:
Dim names As String() = {"James Huddleston", "Pearly", _
"Rupali Agarwal", "Fabio Claudio", "Vamika Agarwal", _
"Sofia Merchant", "Vidya Vrat Agarwal"}
A fin de recuperar los nombres de la matriz de cadenas, consulta la matriz de cadenas
con IEnumerable (Of String) y tambin recorrer la matriz de nombres con la ayuda de
para cada usando LINQ a sintaxis de consulta de objetos:
Dim namesOfPeople As IEnumerable(Of String) = _
From name In names _
Where (name.Length <= 16) _
Select name
For Each name In namesOfPeople
Console.WriteLine(name)
Next
Mediante LINQ to SQL.
LINQ to SQL es una instalacin para la administracin y acceso a datos relacionales
como objetos. Es lgicamente similar a ADO.NET en algunos aspectos, pero considera
datos desde una perspectiva ms abstracto que simplifica muchas operaciones. Se
conecta a una base de datos, convierte construcciones LINQ en SQL, sostiene el SQL,
transforma los resultados en objetos y an registra los cambios y automticamente las
solicitudes de datos de versiones.
Una simple consulta LINQ requiere tres cosas:
clases de entidad.
Un contexto de datos. Una consulta LINQ.
Pruebe: Codificacin una Simple de LINQ to SQL Query.
En este ejercicio, utilizar de LINQ to SQL para recuperar a todos los clientes de la
tabla Customers de Northwind.
1. Navigate to Solution Explorer, right-click the Chapter19 solution, and select Add
New Project. From the provided list of Visual Studio installed templates, choose
-36-
Console Application and name the newly added project LinqToSql. Click OK.
1. Vaya al explorador de soluciones, haga clic en la solucin de Chapter19 y
seleccione Agregar nuevo proyecto. De la lista de plantillas de Visual Studio
instalado, seleccione aplicacin de consola y el proyecto recin agregado
LinqToSql nombre. Haga clic en OK.
2. Cambiar el nombre de Module1.vb a LinqToSql.vb. Reemplace el cdigo en
LinqToSql.vb con el cdigo en el listado de 19-2.
Listing 19-2. LinqToSql.vb
Imports System
Imports System.Linq
Imports System.Data.|Linq
Imports System.Data.Linq.Mapping
Imports System.Data.Linq.DataContext
Namespace Chapter19
Class LinqToSql
<Table(Name:="Customers")> _
Public Class Customer
<Column()> _
Public customerId As String
<Column()> _
Public companyName As String
<Column()> _
Public city As String
<Column()> _
Public counTry As String
End Class
Shared Sub Main(ByVal args() As String)
' connection string
Dim connString As String = "server = .\sqlexpress;" & _
"Integrated security = True;database = northwind"
'create data context
Dim db As DataContext = New DataContext(connString)
'create typed table
Dim Customers As Table(Of Customer) = _
db.GetTable(Of Customer)()
'query database
Dim custs = From c In Customers _
Select c
'display customers
For Each c In custs
Console.WriteLine("{0}, {1}, {2}, {3}", _
c.customerId, c.companyName, c.city, c.counTry)
Next
End Sub
End Class
End Namespace
NOTA no acepta Imports System.Data.Linq
-37-
-38-
db.GetTable(Of Customer)()
to be consistent.
El atributo <column()> marca un campo como uno que contendr los datos de una
tabla. Puede declarar campos que no se asignan a las columnas de la tabla, en una
clase de entidad y LINQ slo ignora, pero los decorado con el atributo <column()>
deben ser compatible con las columnas de la tabla a que se asignan tipos. (Tenga en
cuenta que desde los nombres de tabla y columna de SQL Server no distingue
maysculas de minsculas, los nombres por defecto no tiene que ser idntico en caso
de que los nombres utilizados en la base de datos.)
Crear un contexto de datos:</column()></column()>
'create data context
Dim db As DataContext = New DataContext(connString
Un contexto de datos hace que una conexin ADO.NET no, sino que tambin hace las
cosas que maneja un proveedor de datos. No slo la conexin a un origen de datos,
pero tambin se traduce las solicitudes LINQ (expresadas en SQO) en SQL, pasa el
SQL en el servidor de base de datos y crea objetos en el conjunto de resultados.
Crear una tabla con typed table
'create typed table
Dim Customers As Table(Of Customer) = _
db.GetTable(Of Customer)()
Una tabla con tipo es una coleccin (de tipo System.Data.Linq.Table (Of T) cuyos
elementos son de un tipo especfico. El mtodo Getable de la clase DataContext indica
el contexto de datos para tener acceso a los resultados e indica dnde ponerlos. Aqu,
usted obtiene todas las filas (pero slo cuatro columnas) de la tabla de clientes, y el
contexto de datos crea un objeto para cada fila de la tabla con tipo de clientes.
Inicializa la variable local con una expresin de consulta:
From c In Customers _
Select c
Una expresin de consulta se compone de una clusula From y un rgano de consulta.
Utilice la forma ms simple del cuerpo clusula y consulta desde aqu. Esta clusula
From declara una iteracin variable, c, que se utiliza para recorrer en iteracin el
resultado de la expresin, los clientes es decir, sobre el tipo tabla anteriormente
creado y cargado. Un rgano de consulta debe incluir una clusula select o groupby
que puede ir precedida de dnde o clusulas orderby.
La clusula select es el ms simple posible:
Select c
-39-
y, like un SQL SELECT *, obtiene todas las columnas, por lo que la custs variable
implcitamente se escribe para administrar una coleccin de objetos que contienen
todos los campos de la clase de los clientes.
Por ltimo, que recorra la coleccin de custs y mostrar a cada cliente. Excepto para el
uso del tipo var, que es un nuevo tipo de datos de Visual Basic 2008, en el de cada
instruccin(for each), esto fue slo Visual Basic 2005.
'display customers
For Each c In custs
Console.WriteLine("{0}, {1}, {2}, {3}", _
c.customerId, c.companyName, c.city, c.counTry)
Next
A pesar de las nuevas caractersticas de Visual Basic 2008 y la terminologa, esto debe
sentirse familiar. Una vez que obtenga el bloqueo de la misma, es una alternativa
atractiva para consultas de codificacin. Bsicamente codifica una expresin de
consulta en lugar de SQL para rellenar una coleccin que se puede recorrer con(for
each) una para cada instruccin. Sin embargo, proporcionan una cadena de conexin,
pero no explcitamente abrir o cerrar una conexin. Adems, es necesario ningn
comando, lector de datos ni indizador. Ni siquiera tiene los espacios de nombres
System.Data o System.Data.SqlClient para tener acceso a SQL Server.
Pretty cool, isnt it?
Prubelo: utilizando el clusula WHERE.
Aqu, podr modificar LinqToSql para recuperar a slo los clientes en los Estados
Unidos.
1. Aadir las siguientes dos lneas en negrita a LinqToSql.vb:
'query database
Dim custs = From c In Customers _
where c.country = "USA"
select c
2. Vuelva a ejecutar el programa pulsando Ctrl + F5, y ver los resultados mostrados en
la figura 19-6.
-40-
Cmo funciona.
Simplemente utiliza una clusula Where de Visual Basic 2008 para limitar las filas
seleccionadas:
Where c.country = "USA"
Es como una clusula WHERE de SQL, excepto para el uso de "USA" en lugar de
'Estados Unidos', desde cdigo utilizando Visual Basic 2008 aqu, no de T-SQL.
LINQ to XML
proporciona un XML en memoria programacin API que integra XML consultar
capacidades en Visual Basic 2008 para aprovechar el marco LINQ y Agregar consulta
extensiones especficas a XML. LINQ to XML proporciona la consulta y poder de
transformacin de XQuery y XPath integrado en.NET.
Desde otra perspectiva, se puede tambin pensar de LINQ to XML como una completa
API XML comparable a un modernizado, rediseado System.Xml API adems algunas
de las caractersticas claves de XPath y XSLT. LINQ to XML proporciona instalaciones
para editar documentos XML y rboles de elemento en la memoria, as como
instalaciones de transmisin.
Pruebe: Codificacin una Simple de LINQ to XML Query
. En este ejercicio, utilizar de LINQ to XML para recuperar valores de elemento de un
documento XML.
1. Vaya al explorador de soluciones, haga clic en la solucin de Chapter19 y seleccione
Agregar nuevo proyecto. De la lista de plantillas de Visual Studio instalado,
seleccione aplicacin de consola y el proyecto recin agregado LinqToXml nombre.
Haga clic en OK.
3. Cambiar el nombre de Module1.vb a LinqToXml.vb. Reemplace el cdigo en
LinqToXml.vb con el cdigo en el listado de 19-3.
Listing 19-3. LinqToXml.vb
Imports System
Imports System.Linq
Imports System.Xml.Linq
'Namespace Chapter19
Class LinqToXml
Shared Sub Main(ByVal args() As String)
'load the productstable.xml in memory
Dim doc As XElement = XElement.Load _
("C:\Documents and Settings" & _
"\Toshiba User\My Documents\Visual Studio 2008" & _
"\Projects\Chapter19\productstable.xml")
'Dim prodname As VariantType
'query xml doc
Dim products = From prodname In _
doc.Descendants("products") _
Select prodname.Value
'display details
For Each prodname In products
-41-
-42-
En este captulo, cubrimos los elementos esenciales de mediante LINQ para consultas
simples. Te presentamos a los tres sabores de LINQ, principalmente LINQ a objetos de
LINQ to SQL y LINQ to XML. Discutimos varias caractersticas nuevas de Visual Basic
2008 que admiten el uso de las consultas LINQ. En el siguiente captulo, analizaremos
las caractersticas de LINQ para ADO.NET 3.5.
USANDO ADO.NET 3.5
El mundo pensaba que la base de datos API eran lo suficientemente maduras como
con el lanzamiento de ADO.NET 2.0, pero datos acceder APIrelated innovaciones son
siguen ocurriendo y sigue creciendo. Son razonablemente fcil de usar y permiten
simular los mismos tipos de estructuras de datos y las relaciones que existen en bases
de datos relacionales.
Sin embargo, no interactuar con los datos en tablas de conjuntos de datos o datos de la
misma manera que lo hace con los datos en las tablas de la base de datos. La
diferencia entre el modelo relacional de datos y el modelo de programacin orientada a
objetos es considerable y ADO.NET 2.0 hace relativamente poco para reducir la
impedancia entre los dos modelos.
Con el lanzamiento de.NET Framework 3.5 y la adicin de consulta integrada idioma
(LINQ) para Visual Studio 2008, una nueva versin de ADO.NETTambin se ha
introducido NET: ADO.NET 3.5. Trabajar con ADO. NET 3.5, es necesario tener
ADO.NET Framework 3.5 de entidad (ADO.NET 3.5 EF) y ADO.3.5 Herramientas de
marco de entidad de red. Este captulo le presentar el ADO. 3.5 Modelo de datos de
entidad de 3,5 (EDM) .
En este captulo, analizaremos lo siguiente:
comprensin ADO.NET Framework 3.5 de entidad.
Comprender el modelo de datos de la entidad.
Trabajar con el modelo de datos de la entidad.
Comprensin ADO.NET Framework 3.5 de entidad.
La visin detrs de ADO.NET 3.5, la ltima versin de ADO.NET, es ampliar el nivel de
abstraccin para la programacin de base de datos, que elimina por completo el
desajuste de impedancia entre modelos de datos y lenguajes de desarrollo que utilizar
los programadores escribir aplicaciones de software.
Dos innovaciones revolucionarias han hecho esta misin toda xito: LINQ y ADO.EF
NET 3.5. ADO.NET 3.5 EF existe como una nueva parte de la ADO.NET Familia de
tecnologas.
Con ADO.NET 3.5 EF, los desarrolladores pueden concentrarse en los datos a travs
de un modelo de objetos en lugar de a travs del modelo de datos lgicos y
relacionales tradicionales, ayudando a abstraer el esquema de datos lgicos en un
modelo conceptual para permitir la interaccin con ese modelo a travs de un nuevo
proveedor de datos llamado EntityClient. Abstrae la estructura lgica de base de datos
utilizando una capa conceptual, una capa de asignacin y una capa lgica. En este
captulo, revisamos el propsito de cada una de estas capas.
-43-
-44-
-45-
mapa entre los dos. ADO.NET 3.5 EF permite escribir sus programas contra las clases
que se generan a partir del esquema conceptual. EDM, a continuacin, se encarga de
todas las traducciones como extraer datos de la base de datos por lo que le permite
interactuar con la base de datos relacional en una objectoriented forma.
EDM hace posible la aplicacin de cliente y el esquema de base de datos evolucionar
independientemente de manera imprecisa sin afectar y rompiendo mutuamente.
EDM de ADO.NET 3.5 EF proporciona una vista conceptual del esquema de base de
datos que utiliza la aplicacin. Este punto de vista conceptual es descrito como un
archivo de asignacin XML en la aplicacin. El archivo de asignacin XML asigna las
propiedades de entidad y relaciones asociadas a las tablas de base de datos.
Esta asignacin es la varita mgica que abstrae la aplicacin de los cambios realizados
en el esquema de base de datos relacional. As que en lugar de modificar todos los
segmentos de cdigo orientado a la base de datos en una aplicacin para adaptarse a
los cambios en el esquema de base de datos, basta con modificar el archivo de
asignacin XML de manera que refleja todos los cambios realizan en el esquema de
base de datos. En otras palabras, la solucin ofrecida por ADO.NET 3.5 EDM es
modificar el archivo de asignacin XML para reflejar el cambio de esquema sin cambiar
el cdigo fuente.
Pruebe: Creacin de un modelo de datos de la entidad.
En este ejercicio, ver cmo crear un EDM.
1. Crear un proyecto de aplicacin de Windows Forms denominado
EntityDataModel
2. . Haga clic en la solucin, elija la opcin Cambiar nombre y, a continuacin,
nombre de la solucin Chapter20.
3. Haga clic en el proyecto y seleccione Agregar nuevo elemento. En las plantillas de
Visual Studio proporcionadas elija ADO.NET Entity Data Model y asgnele el nombre
NorthwindModel; la pantalla debe parecerse a la uno en la figura 20-1. Haga clic en
Agregar.
(funciona en framework 4.0)
4. Se iniciar el Asistente para modelo de datos de entidad, con la pantalla Elija modelo
contenido aparezcan en primer lugar. Seleccione la opcin de generar de base de
datos, como se muestra en la figura 20-2. Haga clic en siguiente
.
-46-
-47-
Figure 20-3. Entity Data Model WizardChoose Your Data Connection screen
6.A continuacin, aparece el cuadro de dilogo Propiedades de conexin. Introduzca.
cuadro de lista de \sqlexpress en el nombre del servidor y asegrese de que est
seleccionado el botn de opcin utilizar autenticacin de Windows. En el cuadro de lista
que se proporciona a continuacin la seleccione o escriba un botn de opcin de
nombre de base de datos, seleccione Northwind. El cuadro de dilogo aparecer como
se muestra en la figura 20-4. Haga clic en Probar conexin.
7. Un cuadro de mensaje debe flash que muestra el mensaje "Probar conexin
sucedido". Haga clic en OK. Ahora haga clic en Aceptar en el cuadro de dilogo
Propiedades de conexin.
8.La ventana de elegir la conexin de datos aparece nuevamente, mostrando todos los
ajustes realizados hasta ahora. Garantizar la opcin de casilla de verificacin que
guardar ajustes de conexin de entidad en App.Config como se comprueba y ha
NorthwindEntities como un valor introducido en l. Cambie el valor a
NorthwindEntitiesConnectionString, como se muestra en la figura 20-5. Haga clic en
siguiente.
-48-
-49-
Figure 20-5. Entity Data Model WizardChoose Your Data Connection screen with
settings displayed
9 Aparecer la pantalla elegir sus objetos de base de datos. Expanda el nodo tablas.
De forma predeterminada, todas las tablas de la base de datos Northwind seleccionado
tendr una casilla con una marca de verificacin en ella. Quitar todas las marcas de
verificacin de todas las casillas de verificacin excepto para los que junto a las tablas
de empleados y EmployeeTerritories. Tambin quitar la marca de las casillas de
verificacin junto al nodo vistas y procedimientos almacenados. Aparece la pantalla que
se muestra en la figura 20-6. Haga clic en Finalizar.
-50-
Figure 20-6. Entity Data Model WizardChoose Your Database Objects screen
10. Vaya al explorador de soluciones, y ver que se ha agregado un nuevo objeto de
NorthwindModel.edmx para el proyecto, como se muestra en la figura 20-7.
Figure 20-7. Solution Explorer displaying the generated Entity Data Model
11. Haga doble clic en NorthwindModel.edmx para ver el modelo de datos de entidad
generado en la vista Diseo. Debera aparecer como se muestra en la figura 20-8.
-51-
-52-
Figure 20-9. XML mapping associated with the Entity Data Model
-53-
-54-
-55-
-56-
-57-