Para trabajar con datos de la base de datos mediante el control LinqDataSource, debe crear clases que representen entidades de base de datos.
Para crear las clases de las tablas de base de datos de AdventureWorks
- Si el sitio web no tiene todavía una carpeta App_Code, en el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto, haga clic enAgregar carpeta ASP.NET y, a continuación, en App_Code.
- Haga clic con el botón secundario del mouse en la carpeta App_Code y, a continuación, haga clic en Agregar nuevo elemento.Se abrirá el cuadro de diálogo Agregar nuevo elemento.
- En Plantillas instaladas de Visual Studio, seleccione LINQ a clases SQL, denomine AdventureWorks.dbml al archivo y, a continuación, haga clic en Agregar.Se muestra el Diseñador relacional de objetos.
- En el Explorador de servidores, arrastre la tabla Product (Production) a la ventana Diseñador relacional de objetos.La tabla Product (Production) y sus columnas se representan en la ventana del diseñador como una entidad denominada Product.
- Arrastre las tablas ProductSubCategory y UnitMeasure a la ventana del diseñador.Estas tablas y sus columnas se representan como entidades en la ventana del diseñador. La relación entre Product y las dos tablas relacionadas se muestra con la línea de puntos.
- Guarde el archivo AdventureWorks.dbml.
- En el Explorador de soluciones, abra el archivo AdventureWorks.designer.cs o AdventureWorks.designer.vb.El archivo incluye las clases denominadas AdventureWorksDataContext, Product, ProductSubCategoryy UnitMeasure. La clase Product contiene las propiedadesProductSubcategory, UnitMeasure y UnitMeasure1. Estas propiedades se marcan como claves externas con el atributo AssociationAttribute. Devuelven objetos que representan las tablas ProductSubCategory y UnitMeasure.La propiedad UnitMeasure representa la relación de clave externa del valor en la columna SizeUnitMeasureCode. La propiedad UnitMeasure1 representa la clave externa de la columna WeightUnitMeasureCode.
Si no especifica un valor para la propiedad Select, el control LinqDataSource devuelve todas las propiedades (columnas) de la clase que representa la tabla de base de datos.
Para recuperar un subconjunto de datos con el control LinqDataSource
- En Visual Studio, cree una nueva página web ASP.NET y cambie a la vista Código fuente.
- En la ficha Datos del cuadro de herramientas, arrastre un control LinqDataSource y colóquelo dentro del elemento form de la página web.Puede dejar la propiedad ID como LinqDataSource1.
- Establezca la propiedad ContextTypeName en AdventureWorksDataContext.La clase AdventureWorksDataContext es una clase de contexto de datos que representa la base de datos de AdventureWorks. Contiene una propiedad para cada tabla de la base de datos.
- Establezca la propiedad TableName en Products.
- Establezca la propiedad Select en el valor que se indica a continuación:
new(Name, Size, StandardCost, ListPrice, DaysToManufacture)
Al establecer la propiedad Select, restringe las propiedades que se recuperan de la clase Products. Al seleccionar más de una propiedad de una clase, debe agregar las propiedades en el operador new. Esto se debe a que el control LinqDataSource no devuelve una instancia de la clase especificada en la propiedadTableName. En realidad, devuelve una instancia de una clase creada dinámicamente que sólo contiene estas propiedades.
Si no especifica un valor para la propiedad Where, el control LinqDataSource devuelve todos los registros de la tabla de base de datos. Puede filtrar los registros que se devuelven si establece la propiedad Where. Puede filtrar por un valor estático como ListPrice > 0 para devolver únicamente los registros con el valor de la propiedadListPrice mayor que cero. También puede asignar un valor en tiempo de ejecución si agrega parámetros a la colección WhereParameters.
Para filtrar los datos en tiempo de ejecución con el control LinqDataSource
- Agregue un control DropDownList a la página web y establezca su propiedad AutoPostBack en true.Conserve el nombre predeterminado DropDownList1.
- Agregue cuatro elementos de lista al control DropDownList1 y establezca sus valores en 0, 25, 100 y 400.
- Agregue un elemento WhereParameters entre las etiquetas de apertura y cierre del control LinqDataSource.
- Agregue un control ControlParameter a la colección WhereParameters.
- Establezca la propiedad ControlID del control ControlParameter en DropDownList1, establezca la propiedad Name en SelectedPrice y establezca la propiedadType en Int32.En tiempo de ejecución, el parámetro SelectedPrice contendrá el valor seleccionado de DropDownList1.
- Establezca la propiedad Where en ListPrice > @SelectedPrice para seleccionar sólo los registros cuyo valor ListPrice sea mayor que el valor seleccionado por el usuario.En el ejemplo siguiente se muestra el marcado declarativo de los controles DropDownList y LinqDataSource.
<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server"> <asp:ListItem Value="0"></asp:ListItem> <asp:ListItem Value="25"></asp:ListItem> <asp:ListItem Value="100"></asp:ListItem> <asp:ListItem Value="400"></asp:ListItem> </asp:DropDownList> <asp:LinqDataSource ContextTypeName="AdventureWorksDataContext" TableName="Products" Where="ListPrice > @SelectedPrice" Select="new(Name, Size, StandardCost, ListPrice, DaysToManufacture)" ID="LinqDataSource1" runat="server"> <WhereParameters> <asp:ControlParameter Name="SelectedPrice" DefaultValue="0" ControlID="DropDownList1" Type="Int32" /> </WhereParameters> </asp:LinqDataSource>
No hay comentarios:
Publicar un comentario