Assegnare stored procedure per eseguire aggiornamenti, inserimenti ed eliminazioni (Object Relational Designer)

È possibile aggiungere stored procedure a Object Relational Designer ed eseguirle come metodi DataContext tipici. Possono anche essere usati per eseguire l'override del comportamento di runtime predefinito di LINQ to SQL che esegue inserimenti, Aggiornamenti ed eliminazioni quando le modifiche vengono salvate da classi di entità a un database, ad esempio quando si chiama il SubmitChanges metodo .

Nota

Se le stored procedure restituiscono valori che devono essere inviati al client, ad esempio valori calcolati nelle stesse stored procedure, creare parametri di output all'interno di esse. Se non è possibile usare parametri di output, è preferibile scrivere l'implementazione di un metodo parziale anziché basarsi sugli override generati da Progettazione relazionale oggetti. I membri mappati ai valori generati dal database devono essere impostati su valori appropriati dopo il completamento corretto delle INSERT operazioni o UPDATE . Per altre informazioni, vedere Responsabilità dello sviluppatore nell'override del comportamento predefinito.

Nota

LINQ to SQL gestisce automaticamente i valori generati dal database per le colonne identity (incremento automatico), rowguidcol (identificatore univoco globale generato dal database )e colonne timestamp. I valori degli altri tipi di colonne sono costituiti da valori null non previsti. Per restituire i valori generati dal database, è necessario impostare manualmente su IsDbGenerated true e su uno dei valori seguenti: AutoSync.Always, AutoSync.OnInsert o AutoSync.OnUpdate.AutoSync

Configurare il comportamento di aggiornamento di una classe di entità

Per impostazione predefinita, la logica per aggiornare un database (inserimenti, aggiornamenti ed eliminazioni) con le modifiche apportate ai dati nelle classi di entità LINQ to SQL viene fornita dal runtime LINQ to SQL. Il runtime crea INSERTcomandi predefiniti , UPDATEe DELETE basati sullo schema della tabella (le informazioni sulla colonna e sulla chiave primaria). Quando non si vuole usare il comportamento predefinito, è possibile configurare il comportamento di aggiornamento assegnando stored procedure specifiche per l'esecuzione dei comandi di inserimento, aggiornamento ed eliminazione necessari per modificare i dati nella tabella. Questa operazione può essere eseguita anche quando non viene generato il comportamento predefinito, ad esempio quando viene eseguito il mapping delle classi di entità alle visualizzazioni. Infine, è possibile eseguire l'override del comportamento di aggiornamento predefinito quando il database richiede l'accesso alla tabella tramite stored procedure.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio in questo articolo potrebbero essere diversi nel computer in uso. È possibile usare un'edizione diversa di Visual Studio o impostazioni di ambiente diverse. Per altre informazioni, vedere Personalizzare l'IDE.

Per assegnare stored procedure per l'override del comportamento predefinito di una classe di entità

  1. Aprire il file LINQ to SQL nella finestra di progettazione. Fare doppio clic sul .dbml file in Esplora soluzioni.

  2. In Esplora server o Esplora database espandere Stored procedure e individuare le stored procedure che si vuole usare per i comandi di inserimento, aggiornamento e/o eliminazione della classe di entità.

  3. Trascinare la stored procedure in Object Relational Designer.

    La stored procedure viene aggiunta al riquadro dei metodi come metodo DataContext. Per altre informazioni, vedere Metodi DataContext (Object Relational Designer).

  4. Selezionare la classe di entità per cui si desidera usare la stored procedure per eseguire gli aggiornamenti.

  5. Nella finestra Proprietà selezionare il comando di cui eseguire l'override (Insert, Update o Delete).

  6. Fare clic sui puntini di sospensione (...) accanto alle parole Usa fase di esecuzione per aprire la finestra di dialogo Configura comportamento.

  7. Seleziona Personalizza.

  8. Selezionare la stored procedure desiderata nell'elenco Personalizza.

  9. Controllare l'elenco di Argomenti metodo e Proprietà classe per verificare che venga eseguito il mapping degli Argomenti metodo alle Proprietà classe appropriate. Eseguire il mapping degli argomenti del metodo originale (Original_<ArgumentName>) alle proprietà originali (<PropertyName> (Original)) per i Update comandi e Delete .

    Nota

    Per impostazione predefinita, viene eseguito il mapping degli argomenti di metodo alle proprietà di classe quando i nomi corrispondono. Se non vi è più corrispondenza tra i nomi modificati nella tabella e nella classe di entità, potrebbe essere necessario selezionare la proprietà di classe equivalente a cui eseguire il mapping nel caso in cui la finestra di progettazione non sia in grado di determinare il mapping corretto.

  10. Fare clic su OK o applicare.

    Nota

    È possibile continuare a configurare il comportamento per ogni combinazione di classi e comportamenti, purché si faccia clic su Applica dopo aver apportato ogni modifica. Se si modifica la classe o il comportamento prima di fare clic su Applica, viene visualizzata una finestra di dialogo di avviso che consente di applicare le modifiche.

Per ripristinare l'uso della logica di runtime predefinita per gli aggiornamenti, fare clic sui puntini di sospensione accanto al comando Insert, Update o Delete nella finestra Proprietà e quindi selezionare Usa fase di esecuzione nella finestra di dialogo Configura comportamento.