Compartir a través de


Cómo: Actualizar, insertar y eliminar datos con el control LinqDataSource

Actualización: noviembre 2007

Con el control LinqDataSource puede crear páginas web que permiten a los usuarios actualizar, insertar y eliminar datos. No tiene que especificar comandos SQL, porque el control LinqDataSource usa los comandos creados dinámicamente para esas operaciones. Para permitir a los usuarios modificar los datos, puede habilitar operaciones de actualización, inserción o eliminación en el control LinqDataSource. A continuación, puede conectar el control a un control enlazado a datos que permite a los usuarios actualizar los datos, como los controles DetailsView o GridView. Si desea personalizar los valores que se van a actualizar, puede agregar parámetros o crear un controlador de eventos y cambiar los valores dinámicamente.

Este tema describe cómo usar el control LinqDataSource para habilitar automáticamente las operaciones de actualización, inserción y eliminación. También describe cómo personalizar los valores que se actualizan. Finalmente, el tema muestra cómo crear un controlador de eventos para establecer mediante programación una propiedad antes de insertar o actualizar un registro de base de datos.

Los pasos para habilitar las operaciones automáticas de actualización, inserción y eliminación son similares entre sí, y los procedimientos de este tema muestran cómo habilitar las tres funciones. Sin embargo, no es necesario que habilite las tres. Puede habilitar sólo las funciones que necesite.

Si no está familiarizado con el control LinqDataSource, vea Información general sobre el control de servidor web LinqDataSource y Tutorial: Recuperar, actualizar, insertar y eliminar datos con los controles LinqDataSource y DetailsView.

Actualizar, insertar y eliminar datos automáticamente

Para habilitar el control LinqDataSource de forma que controle automáticamente las actualizaciones de datos, se requiere la configuración siguiente:

Para habilitar la actualización, inserción y eliminación de datos

  1. En una página web ASP.NET, agregue un control LinqDataSource.

  2. Establezca la propiedad ContextTypeName en el nombre de un objeto que derive de la clase DataContext.

    Si usa el Diseñador relacional de objetos de Visual Studio 2008 para crear una clase que representa una tabla de base de datos SQL, la clase generada deriva automáticamente de DataContext.

  3. Establezca la propiedad TableName en el nombre de la clase de entidad que representa la tabla de base de datos asociada.

  4. Establezca las propiedades EnableUpdate, EnableDelete y EnableInsert del control LinqDataSource en true.

  5. Agregue un control enlazado a datos, como un control DetailsView y establezca su propiedad DataSourceID en el identificador del control LinqDataSource.

  6. Establezca la propiedad DataKeyNames del control de datos en el nombre de la columna o columnas clave principales de la tabla.

  7. Proporcione un método en el control enlazado a datos para que el usuario cambie entre los modos de actualización, eliminación y edición.

    Por ejemplo, puede agregar botones al control enlazado a datos o permitir que el control cree automáticamente esos botones.

    El ejemplo siguiente muestra el marcado declarativo para parte de una página web ASP.NET que contiene un control LinqDataSource y un control DetailsView. Los controles se configuran para permitir al usuario mostrar, actualizar, insertar y eliminar datos de una tabla denominada Products.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    <asp:DetailsView
      DataSourceID="LinqDataSource1"
      DataKeyNames="ProductID"
      AutoGenerateEditButton="true"
      AutoGenerateDeleteButton="true"
      AutoGenerateInsertButton="true"
      AllowPaging="true"
      ID="DetailsView1"
      >
    </asp:DetailsView>
    

Agregar parámetros para actualizar, insertar o eliminar datos

De forma predeterminada, no es necesario que agregue parámetros para actualizar, insertar o eliminar datos. Un control enlazado a datos pasa sus valores al control LinqDataSource y el control LinqDataSource usa estos valores para establecer la propiedad correspondiente. LINQ to SQL crea los comandos para modificar el origen de datos. Para obtener más información, vea LINQ to SQL.

Puede especificar parámetros para las operaciones de actualización, inserción o eliminación. Esto se lleva a cabo cuando se desea proporcionar un valor predeterminado o definir si los valores de cadena vacía se convierten en null. No tiene que especificar un parámetro para cada valor que se actualiza o inserta, sólo para los valores que se personalizan. El control LinqDataSource administra automáticamente los valores que no define ningún parámetro.

El control LinqDataSource contiene las colecciones siguientes para administrar los parámetros: UpdateParameters, InsertParametersy DeleteParameters.

Para agregar parámetros para actualizar, insertar y eliminar datos

  • Agregue una definición de parámetro para cada valor que desea modificar.

    El ejemplo siguiente muestra cómo agregar un parámetro para una propiedad denominada Category. El parámetro se agrega a las colecciones UpdateParameters y InsertParameters.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
      <UpdateParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </UpdateParameters>
      <InsertParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </InsertParameters>
    </asp:LinqDataSource>
    

    Cuando el usuario no proporciona un valor para la propiedad Category, en la base de datos se guarda el valor predeterminado.

Establecer valores mediante programación

Para establecer propiedades mediante programación antes de que se realice una operación de datos, puede crear controladores de eventos para los eventos Inserting, Updatingy Deleting del control LinqDataSource. El control LinqDataSource establece automáticamente cualquier propiedad que no se establece en el controlador de eventos.

Para establecer valores mediante programación

  1. Cree un controlador de eventos para los eventos Inserting, Updating o Deleting del control LinqDataSource.

  2. Agregue código al controlador de eventos que establezca mediante programación el valor que desea modificar.

    Los datos para actualizar, insertar o eliminar se encuentran en las propiedades siguientes:

    Evento

    Propiedad

    Clase

    Inserting

    NewObject

    LinqDataSourceInsertEventArgs

    Updating

    NewObject

    OriginalObject

    LinqDataSourceUpdateEventArgs

    Deleting

    OriginalObject

    LinqDataSourceDeleteEventArgs

    Todas estas propiedades devuelven un objeto de tipo Object. Puede convertir los objetos devueltos de estas propiedades en el tipo de la clase de entidad que representa los datos. Después de la conversión, puede establecer las propiedades para ese tipo.

    El ejemplo siguiente muestra un controlador de eventos para el evento Inserting que establece una DateModified columna en la fecha y hora actuales. Convierte el objeto de la propiedad NewObject al tipo Product.

    Protected Sub LinqDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs)
        Dim product As Product
        product = CType(e.NewObject, Product)
        product.DateModified = DateTime.Now
    End Sub
    
    protected void LinqDataSource_Inserting(object sender, LinqDataSourceInsertEventArgs e)
    {
        Product product = (Product)e.NewObject;
        product.DateModified = DateTime.Now;
    }
    

    El ejemplo siguiente muestra el marcado declarativo para un control LinqDataSource que enlaza el método LinqDataSource_Inserting al evento Inserting.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      OnInserting="LinqDataSource_Inserting"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    

Compilar el código

Para actualizar, insertar o eliminar datos con el control LinqDataSource, debe crear una clase de entidad que represente una tabla de base de datos. Puede crear una clase de entidad con el Diseñador relacional de objetos de Visual Studio 2008.

Seguridad

En este ejemplo se incluye un cuadro de texto que acepta datos del usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, las páginas Web ASP.NET validan los datos escritos por el usuario para comprobar que no incluyen secuencias de comandos ni elementos HTML. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

Para obtener información sobre cómo almacenar una cadena de conexión, vea Cómo: Proteger cadenas de conexión al utilizar controles de origen de datos.

Para obtener información sobre cómo no mostrar información confidencial en mensajes de error, vea Cómo: Mostrar mensajes de error seguros.

Vea también

Conceptos

Información general sobre el control de servidor web LinqDataSource

Referencia

Parameter