Compartir a través de


Asignar procedimientos almacenados para realizar actualizaciones, inserciones y eliminaciones (Diseñador de O/R)

Los procedimientos almacenados se pueden agregar al Diseñador de O/R y ejecutarse como métodos típicos DataContext . También se pueden usar para anular el comportamiento en tiempo de ejecución predeterminado de LINQ to SQL que realiza inserciones, actualizaciones y eliminaciones cuando los cambios se guardan desde clases de entidad en una base de datos (por ejemplo, al llamar al método SubmitChanges).

Nota:

Si el procedimiento almacenado devuelve valores que deben devolverse al cliente (por ejemplo, valores calculados en el procedimiento almacenado), cree parámetros de salida en los procedimientos almacenados. Si no puede usar parámetros de salida, escriba una implementación de método parcial en lugar de confiar en invalidaciones generadas por el Diseñador de O/R. Los miembros asignados a los valores generados por la base de datos deben establecerse en valores adecuados después de que se ejecuten correctamente las operaciones de INSERT o UPDATE. Para obtener más información, vea Responsabilidades del desarrollador al invalidar el comportamiento predeterminado.

Nota:

LINQ to SQL controla automáticamente los valores generados por la base de datos para la identidad (incremento automático), rowguidcol (identificador único global (GUID) generado por la base de datos y columnas de marca de tiempo. Los valores generados por la base de datos en otros tipos de columna producirán inesperadamente un valor NULL. Para devolver los valores generados por la base de datos, debe establecer IsDbGenerated manualmente en true y AutoSync en uno de los siguientes valores: AutoSync.Always, AutoSync.OnInsert o AutoSync.OnUpdate.

Configurar el comportamiento de actualización de una clase de entidad

De forma predeterminada, la lógica para actualizar una base de datos (inserciones, actualizaciones y eliminaciones) con cambios realizados en los datos de las clases de entidad LINQ to SQL se proporciona mediante el entorno de ejecución de LINQ to SQL. El tiempo de ejecución crea comandos INSERT, UPDATE, y DELETE predeterminados que se basan en el esquema de la tabla (la información de la columna y la clave principal). Cuando no se desea el comportamiento predeterminado, puede configurar el comportamiento de actualización asignando procedimientos almacenados específicos para realizar las inserciones, actualizaciones y eliminaciones necesarias para manipular los datos de la tabla. También se puede realizar esta acción cuando no se genera el comportamiento predeterminado, por ejemplo, cuando las clases de entidad se asignan a vistas. Por último, puede invalidar el comportamiento de actualización predeterminado cuando la base de datos requiere acceso a tablas mediante procedimientos almacenados.

Nota:

Las instrucciones de este artículo muestran la versión más reciente de la experiencia de desarrollo interactiva (IDE) disponible en Visual Studio. El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario. Puede que esté usando una versión diferente de Visual Studio u otra configuración del entorno. Para obtener más información, consulte Personalizar el IDE.

Para asignar procedimientos almacenados para invalidar el comportamiento predeterminado de una clase de entidad

  1. Abra el archivo LINQ to SQL en el diseñador. (Haga doble clic en el archivo en el .dbmlExplorador de soluciones).

  2. En el Explorador de servidores o en el Explorador de bases de datos, expanda Procedimientos almacenados y busque los procedimientos almacenados que desea usar para los comandos Insertar, Actualizar o Eliminar de la clase de entidad.

  3. Arrastre el procedimiento almacenado al Diseñador de O/R.

    El procedimiento almacenado se agrega al panel de métodos como método DataContext . Para obtener más información, vea Métodos DataContext (Diseñador de O/R).

  4. Seleccione la clase de entidad para la que desea usar el procedimiento almacenado para realizar actualizaciones.

  5. En la ventana Propiedades , seleccione el comando que se va a invalidar (Insertar, Actualizar o Eliminar).

  6. Haga clic en los puntos suspensivos (...) junto a las palabras Usar tiempo de ejecución para abrir el cuadro de diálogo Configurar comportamiento .

  7. Seleccione Personalizar.

  8. Seleccione el procedimiento almacenado deseado en la lista Personalizar .

  9. Inspeccione la lista de argumentos de método y propiedades de clase para comprobar que los argumentos del método se asignan a las propiedades de clase adecuadas. Asigne los argumentos del método original (Original_<ArgumentName>) a las propiedades originales (<PropertyName> (Original)) para los comandos Update y Delete.

    Nota:

    De forma predeterminada, los argumentos de método se asignan a las propiedades de clase cuando coinciden los nombres. Si los nombres de propiedad modificados ya no coinciden entre la tabla y la clase de entidad, es posible que tenga que seleccionar la propiedad de clase equivalente a la que asignar si el diseñador no puede determinar la asignación correcta.

  10. Haga clic en Aceptar o Aplicar.

    Nota:

    Puede seguir configurando el comportamiento de cada clase y combinación de comportamiento siempre que haga clic en Aplicar después de realizar cada cambio. Si cambia la clase o el comportamiento antes de hacer clic en Aplicar, aparecerá un cuadro de diálogo de advertencia y le proporcionará la oportunidad de aplicar los cambios.

Para revertir al uso de la lógica en tiempo de ejecución predeterminada para las actualizaciones, haga clic en los puntos suspensivos situados junto al comando Insertar, Actualizar o Eliminar en la ventana Propiedades y, a continuación, seleccione Usar tiempo de ejecución en el cuadro de diálogo Configurar comportamiento .