Domanda

Per impostazione predefinita, l'opzione di collegamento SQL ARITHABORT è OFF per le connessioni OLE DB, che presumo LINQ to SQL sta usando. Tuttavia ho bisogno di essere su ON. La ragione è che il mio DB contiene alcune viste indicizzate, e ogni inserimento / aggiornamento / operazioni di eliminazione sulle tabelle che fanno parte di una vista indicizzata fallire se la connessione non ha ARITHABORT ON. seleziona anche contro la vista indicizzata in sé non riescono se viene usato il CON (NOEXPAND) suggerimento (che si deve utilizzare in SQL Standard Edition per ottenere il beneficio delle prestazioni della vista indicizzata).

C'è da qualche parte nel contesto dati posso specificare che voglio questa opzione? O da qualche parte nel codice posso farlo ??

Sono riuscito una soluzione goffa, ma io non mi piace .... devo creare una stored procedure per ogni / inserimento / aggiornamento / operazione di eliminazione di selezione, e in questo proc prima eseguire SET ARITHABORT ON, quindi exec un'altra proc che contiene l'attuale di selezione / inserimento / aggiornamento / eliminazione. In altre parole il primo proc è solo un involucro per il secondo. Non funziona per appena messo SET ARITHABORT ON sopra il / inserimento / aggiornamento / code Elimina.

È stato utile?

Soluzione

Quello che ho finito per fare è stato scrivere il mio metodo nella mia classe "aiuto" per creare il DataContext e l'utilizzo di questo ogni volta che ho bisogno di un DataContext, per es.

      Dim conn As New SqlConnection(Config.GetConnectionString("SiteSqlServer"))
      Dim command As New SqlCommand("set arithabort on;", conn)
      command.Connection.Open()
      command.ExecuteNonQuery()
      Dim dc = New SiteDataContext(conn)

L'idea è quella di utilizzare il costruttore DataContext che richiede una connessione come parametro. I creare e aprire uno SqlConnection, eseguire "set ARITHABORT ..." su di esso, e passarlo al DC (merito va a manifesto qui ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top