This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

lunes, 6 de enero de 2014

Usar LINQ con ASP.NET

Puede utilizar Language-Integrated Query (LINQ) en páginas web para recuperar y modificar datos. LINQ aplica los principios de la programación orientada a objetos a los datos relacionales. Proporciona un modelo de programación unificado para realizar consultas de datos de tipos diferentes de orígenes de datos y extiende directamente las funciones de datos de los lenguajes C# y Visual Basic. Para obtener más información, vea LINQ (Language-Integrated Query).
Puede utilizar LINQ mediante el control LinqDataSource, mediante el control ObjectDataSource o creando consultas LINQ.
Si utiliza LINQ en una aplicación web, es posible que deba cambiar los archivos de directivas para la seguridad de acceso del código. Estos cambios se describen más adelante en este tema.
1.    Control LinqDataSource
El control LinqDataSource proporciona una manera fácil de conectar a los datos de una base de datos o a una recolección de datos en memoria como una matriz. Puede escribir mediante declaración todas las condiciones necesarias para los escenarios típicos como la recuperación, filtrado, clasificación y agrupación de datos. El control crea dinámicamente las consultas LINQ a partir de los valores proporcionados mediante declaración.
Al recuperar datos de una clase de contexto de datos LINQ to SQL, también puede configurar un control LinqDataSource para administrar las operaciones de actualización, inserción y eliminación. El control realiza estas tareas sin requerir que se escriban comandos SQL para ello.
Para mostrar los datos en una página web, enlace un control enlazado a datos al control LinqDataSource. Los controles GridView y DetailsView son ejemplos de controles enlazados a datos.
En el ejemplo siguiente se muestra el marcado de un control LinqDataSource que conecta con la base de datos AdventureWorks. Devuelve los registros de la tabla Contact cuya propiedad EmailPromotion tiene un valor igual a 1.
<asp:LinqDataSource
    ContextTypeName="AdventureWorksDataContext"
    TableName="Contacts"
    Where="EmailPromotion=1"
    ID="LinqDataSource1"
    runat="server">
</asp:LinqDataSource>
Para obtener más información, vea Información general sobre el control de servidor web LinqDataSource.



2.    Control ObjectDataSource
El control ObjectDataSource se utiliza cuando se desea interactuar con los datos de una manera más compleja que la que permite el control LinqDataSource.Por ejemplo, puede crear un método de actualización que permita establecer valores en tablas combinadas.
El control ObjectDataSource se puede utilizar con una clase LINQ to SQL. Para ello, se establece la propiedad TypeName en el nombre de la clase de contexto de datos. También se establecen los métodos SelectMethod, UpdateMethod, InsertMethod y DeleteMethod en los métodos de la clase de contexto de datos que realizan las operaciones correspondientes.
Si utiliza la ejecución diferida de consultas con el control ObjectDataSource, debe crear un controlador de eventos para el evento ObjectDisposing con el fin de cancelar la eliminación de la clase de contexto de datos. Este paso es necesario porque LINQ to SQL admite la ejecución diferida, mientras que el controlObjectDataSource intenta eliminar el contexto de datos después de la operación Select.
3.    Consultas LINQ
Puede incluir consultas LINQ en una página web sin utilizar un control de origen de datos. Puede utilizar una consulta LINQ si necesita utilizar un operador de consulta que no está disponible en el control LinqDataSource. También puede utilizarlo si desea mostrar datos de sólo lectura en un control enlazado a datos sin el procesamiento necesario para crear un control de origen de datos. Para obtener más información sobre los operadores de LINQ, veaInformación general sobre operadores de consulta estándar. Para obtener una lista de los operadores de consulta que están disponibles en el controlLinqDataSource, vea Información general sobre el control de servidor web LinqDataSource.
En el ejemplo siguiente se muestra cómo incluir una consulta LINQ en una página web. El ejemplo muestra los resultados de la consulta en un controlGridView.
[Visual Basic]
Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        Dim dataContext As AdventureWorksDataContext = _
            New AdventureWorksDataContext()
        Dim query = From contact In dataContext.Contacts _
          Where contact.EmailPromotion = 1 _
          Select contact

        GridView1.DataSource = query
        GridView1.DataBind()
    End If
End Sub
[C#]
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        AdventureWorksDataContext dataContext =
            new AdventureWorksDataContext();

        var query = from contact in dataContext.Contacts
          where contact.EmailPromotion==1
          select contact;

        GridView1.DataSource = query;
        GridView1.DataBind();
    }
}
4.    LINQ y seguridad de acceso a código
En las secciones siguientes se proporciona información sobre cómo utilizar LINQ con un nivel de confianza medio y con un nivel de confianza alto.
·         Utilizar LINQ con un nivel de confianza medio
Para utilizar LINQ en una aplicación web que se ejecuta con un nivel de confianza medio, debe incluir dos elementos en el archivo de directivas definido para la confianza Medium. De forma predeterminada, el archivo web_mediumtrust.config es el archivo de directivas del nivel de confianza medio y estos elementos se instalan en el archivo.
En el elemento SecurityClasses, LINQ requiere un elemento SecurityClass con los siguientes atributos:
<SecurityClass
  Name="ReflectionPermission"
  Description="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
En el elemento PermissionSet cuyo atributo Name está establecido en "ASP.Net", LINQ requiere un elemento IPermission con los siguientes atributos:
<IPermission
  class="ReflectionPermission"
  version="1"
  Flags="RestrictedMemberAccess"
/>


·         Utilizar LINQ con un nivel de confianza alto
Para utilizar LINQ en una aplicación web que se ejecuta con un nivel de confianza alto, debe incluir un elemento en el archivo de directivas definido para la confianza High. De forma predeterminada, el archivo web_hightrust.config es el archivo de directivas del nivel de confianza alto y este elemento se instala en el archivo.
Dentro del elemento PermissionSet que tiene el atributo Name establecido en "ASP.Net", el elemento IPermission de ReflectionPermission. En el ejemplo siguiente se muestra la configuración necesaria para LINQ:
<IPermission
  class="ReflectionPermission"
  version="1"
  Flags="ReflectionEmit, RestrictedMemberAccess"
/>


Cómo llamar a procedimientos almacenados de SQL Server en ASP.NET

En este artículo se muestra cómo utilizar ASP.NET y ADO.NET con Visual Basic .NET para crear un procedimiento almacenado de Microsoft SQL Server y llamarlo con un parámetro de entrada y otro de salida.
El código de ejemplo de este artículo comprueba en primer lugar si el procedimiento almacenado que va a crear existe en la base de datos. Si no existe, crea uno que emplea un parámetro para buscar en la tabla Authors por apellidos y devuelve las filas coincidentes y el número de filas devueltas en un parámetro de salida.
En este artículo también se muestra cómo crear un Web Form que proporciona una interfaz de usuario sencilla. El Web Form contiene los elementos siguientes:
    • ·         Un cuadro de texto en el que el usuario escribe la condición de búsqueda.
    • ·         Un control DataGrid que muestra los resultados de la búsqueda.
    • ·         Un control Label que muestra el número de registros devueltos.
    • ·         Un control Button que llama al procedimiento almacenado cuando se hace clic en el botón.

Requisitos
En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Packs requeridos:
·         Microsoft SQL Server versión 7.0 o posterior
·         Microsoft Visual Studio .NET
·         Microsoft Visual Basic .NET
·         Permisos para crear el procedimiento almacenado en la base de datos
En este artículo se da por supuesto que está familiarizado con los temas siguientes:
·         Procedimientos almacenados de SQL Server
Crear un proyecto ASP.NET y agregar controles
En esta sección, creará un proyecto ASP.NET y la interfaz básica de usuario. Tenga en cuenta que en estos pasos se utiliza código de Microsoft Visual Basic .NET. Para crear el proyecto, siga estos pasos:

1.       Haga clic en Inicio, seleccione Programas, Microsoft Visual Studio .NET y, a continuación, haga clic en Microsoft Visual Studio .NET.
2.       En la página de inicio de Visual Studio .NET, haga clic en Nuevo proyecto.
3.       En el cuadro de diálogo Nuevo proyecto, haga clic en la opción Proyectos de Visual Basic bajo Tipos de proyecto y, a continuación, haga clic en Aplicación Web ASP.NET bajo Plantillas.
4.       En el cuadro Nombre, escriba un nombre para la aplicación Web y haga clic en Aceptar.
5.       Agregue los siguientes controles de servidor al Web Form y establezca las propiedades indicadas en la tabla:


6.       Arrastre un control de servidor DataGrid desde el cuadro de herramientas al Web Form y establezca la propiedad Name como GrdAuthors.
7.       Haga clic con el botón secundario del mouse (ratón) en la cuadrícula y, a continuación, haga clic en Autoformat.
8.       Haga clic en Professional 1 para el esquema y haga clic en Aceptar.

Crear el procedimiento almacenado GetAuthorsByLastName

Utilice el siguiente código Transact-SQL para crear el procedimiento almacenado:          
Este código incluye dos parámetros: @au_lname y @RowCount. @au_lname es un parámetro de entrada que obtiene la cadena de búsqueda para realizar una búsqueda "like" en la tabla Authors. @RowCount es un parámetro de salida que utiliza la variable @@ROWCOUNT para obtener las filas afectadas.

Crear y ejecutar el procedimiento almacenado

Para tener acceso a las bases de datos de SQL Server, tiene que importar el espacio de nombres System.Data.SqlClient, que proporciona nuevos objetos como SqlDataReader y SqlDataAdapter. Puede utilizar SqlDataReader para leer una secuencia de filas sólo hacia delante en una base de datos de SQL Server. DataAdapter representa un conjunto de comandos de datos y una conexión de base de datos que se puede utilizar para llenar el objeto DataSet y actualizar una base de datos de SQL Server.


ADO.NET también presenta el objeto DataSet, que es una representación de datos residente en memoria que ofrece un modelo de programación relacional coherente sin importar el origen de los datos. En el código de esta sección se emplean todos estos objetos.
1.       Haga doble clic en el Web Form.
2.  Agregue el código siguiente a la sección Declaration del Web Form, que aparece en la parte superior de la ventana de código:
                              
3.  Para asegurarse de que el procedimiento almacenado existe y crear otro nuevo, utilice un objeto SqlCommand con un objeto SqlDataReader. Puede emplear SqlCommand para ejecutar cualquier comando SQL contra la base de datos. A continuación, llame al método ExecuteReader de SqlCommand para devolver SqlDataReader, que contiene las filas coincidentes de la consulta.                     

4.       Llame al procedimiento almacenado en el evento Click del botón btnGetAuthors y utilice el objeto SqlDataAdapterpara ejecutar el procedimiento almacenado. Tiene que crear parámetros para el procedimiento almacenado y anexarlo a la colección Parameters del objeto SqlDataAdapter.


5.       En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en la página .aspx y, a continuación, haga clic en Establecer como página de inicio.
6.       Guarde el proyecto y, después, haga clic en Iniciar en Visual Studio .NET. Observe que el proyecto se compila y que se ejecuta la página predeterminada.
7.       Escriba los apellidos del autor en el cuadro de texto y haga clic en Obtener autores. Se llama al procedimiento almacenado y las filas devueltas llenan el control DataGrid.

Puede proporcionar cadenas de búsqueda de tipo SQL Server como G%, que devuelve los todos los autores cuyos apellidos comienzan con la letra "G."
Solución de problemas
·         Si no puede conectar a la base de datos, asegúrese de que ConnectionString apunta correctamente al servidor que ejecuta SQL Server.

·         Si puede conectar a la base de datos, pero tiene problemas al intentar crear el procedimiento almacenado, asegúrese de que dispone de los permisos adecuados para crear procedimientos almacenados en la base de datos a la que se está conectando.

Cómo: Habilitar la paginación predeterminada en el control de servidor Web GridView

Si está utilizando el ASP.NET GridView de control con grandes cantidades de datos, es posible que desee a la página a través de las filas y mostrar un subconjunto de las filas en cada página. El GridView Control ha incorporado soporte para paginación.
Para habilitar la paginación utilizando el panel de etiquetas inteligentes
1.       En la vista Diseño, haga clic en el GridView Control y seleccione Mostrar etiqueta inteligente .
2.       En el panel de etiquetas inteligentes, seleccione Habilitar paginación.
Descripción: NotaNota
La Habilitar edición casilla de verificación aparece en el panel de etiquetas inteligentes sólo si el control de origen de datos al que GridView está enlazado el control admite la paginación.

Para habilitar la paginación en la ventana Propiedades
·         Seleccione el GridView control, y en la ventana Propiedades, establezca AllowPaging propiedad a la verdadera .
Para habilitar la paginación por defecto de forma declarativa
·         En la vista Código fuente, ajuste el AllowPaging atributo del <asp:GridView> elemento de verdad , como en el siguiente ejemplo:

  <asp:GridView Runat="server" ID="GridView1" AllowPaging="true" />  

1.      Configuración de paginación Apariencia
Puede establecer el tamaño de la página para especificar el número de filas que se muestran a la vez. Además, se puede establecer el estilo de los enlaces que se utilizan para crear botones de navegación. Puede elegir entre los siguientes tipos:
·         Siguientes y anteriores botones. Los títulos de los botones pueden ser cualquier texto que desee.
·         Los números de página, lo que permite a los usuarios saltar a una página específica. Se puede especificar la cantidad de números que se muestran, si hay más páginas, se muestra puntos suspensivos (...) junto a los números.
Para cambiar el número de filas que se muestran por página
·         Seleccione el GridView control, y en la ventana Propiedades, establezca PageSize para el número de filas que desea mostrar por página.
Para especificar la paginación predeterminada con los botones Siguiente y Anterior
1.       Ajuste el GridView control para permitir paginación.
2.       En la ventana Propiedades, expanda el PagerSettings nodo.

Establezca el modo de SiguienteAnterior .

Crear una columna personalizada en un control de servidor Web GridView

El GridView control puede generar automáticamente las columnas de los campos proporcionados por la fuente de datos. Además, puede crear una colección de columnas que se mostrará en lugar de generarlas automáticamente. Sin embargo, puede encontrarse con un escenario en el que es necesario personalizar cómo se muestra una columna individual. En ese caso, puede crear un TemplateField para especificar un diseño de columna personalizado.
1.      Creación de plantillas
A TemplateField objeto le permite especificar plantillas que contienen marcado y controles para personalizar el diseño y el comportamiento de una columna en un GridView control. El uso de un ItemTemplate , puede especificar el diseño que se utilizará cuando las GridView muestra los datos en una columna. Para especificar diseño personalizado cuando los usuarios editar datos de una columna, puede crear un EditItemTemplate .
Su plantilla puede contener el marcado, los controles de servidor Web y botones de comando. Para obtener más información sobre las plantillas, consulte Servidor Web ASP.NET Plantillas de controles
2.      De enlace de datos en una plantilla
En una plantilla, puede enlazar controles a datos utilizando los Eval y Bind métodos. Se utiliza la Eval método cuando el control sólo mostrará valores. Se utiliza el Bind método cuando los usuarios pueden modificar un valor de los datos es, para escenarios de actualización de datos. Usted puede utilizar el Eval método en cualquiera de las plantillas para mostrar los datos. Se utiliza el Bind método en una plantilla con controles en los que los usuarios pueden cambiar valores, como TextBox y CheckBox controles, o una plantilla que permite un registro que desea borrar. Para obtener más información, consulte el enlace de datos Información general sobre expresiones .
3.      Ejemplo
El siguiente ejemplo muestra el Columns colección de un GridView control. La colección contiene una TemplateField objeto, que a su vez contiene un ItemTemplate objeto. Para mostrar una fecha, el ItemTemplate incluye una etiqueta de control que utiliza el Eval método. Para editar una fecha, las otras plantillas utilizan un calendario de control que utiliza el Bind método.
VB

<columnas>                  
  <Asp: BoundField DataField = "EmployeeID" HeaderText = "ID de empleado"  ReadOnly = "true" />                   
  <Asp: BoundField DataField = "Nombre"   HeaderText = "Nombre" />
  <Asp: BoundField DataField = "Apellido"    HeaderText = "Apellido" />                   
  <Asp: TemplateField HeaderText = "Fecha de nacimiento" >
    <ItemTemplate>
      <Asp: Label ID = "BirthDateLabel" runat = "Servidor" 
                 Text = '<% # Eval ("fecha de nacimiento", "{0: d}")%>' />
    </ ItemTemplate>
    <EditItemTemplate>
      <Asp: Calendar ID = "EditBirthDateCalendar" runat = "Servidor"
                    VisibleDate = '<% # Eval ("fecha de nacimiento")%>'
                    SelectedDate = '<% # Bind ("fecha de nacimiento")%>' />
    </ EditItemTemplate>
  </ Asp: TemplateField>  
  <Asp: HyperLinkField Text = "Mostrar

</ Columns>