[c#] Impostazione della sessione per supportare le viste indicizzate



Answers

Question

Sto usando le viste indicizzate nel mio database. Quindi il client dovrebbe avere qualche impostazione di connessione di sessione per chiamarli. Sto usando la connessione ado.net, comando per chiamare stored procedure. Ogni volta che devo chiamare una procedura memorizzata, creo la connessione (spero che il pool di connessione mi consenta di farlo rapidamente) ed eseguo un comando per applicare queste impostazioni alla connessione corrente.

// some code to create a new connection
 //...
 //... 

 if (connection.State != ConnectionState.Open)
 {
     connection.Open();
 }



    using (var cmd = connection.CreateCommand())
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandText =
                            @"
                    SET ANSI_NULLS ON
                    SET ANSI_PADDING ON
                    SET ANSI_WARNINGS ON
                    SET ARITHABORT ON
                    SET CONCAT_NULL_YIELDS_NULL ON
                    SET QUOTED_IDENTIFIER ON
                    SET NUMERIC_ROUNDABORT OFF";
        cmd.ExecuteNonQuery();
    }

Altro pensiero: aggiungere queste impostazioni prima di ogni chiamata della stored procedure:

command.CommandText = 'SET....';
command.CommandText += ' EXEC MyStroredProc @...'; 

Questa soluzione causa alcuni problemi di prestazioni, non è vero?

Come posso evitare un lavoro extra se devo creare una nuova connessione ogni volta? Come applicare queste impostazioni automaticamente?

SOLUZIONE:

ALTER DATABASE [MyDB] 
    SET 
    ANSI_NULLS ON,
    ANSI_PADDING ON,
    ANSI_WARNINGS ON,
    ARITHABORT ON,
    CONCAT_NULL_YIELDS_NULL ON,
    QUOTED_IDENTIFIER ON,
    NUMERIC_ROUNDABORT OFF



Links