Frage

Standardmäßig ist die SQL -Verbindungsoption Aritabort für OLEDB -Verbindungen ausgeschaltet, von denen ich annehme, dass LINQ zu SQL verwendet wird. Ich brauche es jedoch, um zu sein. Der Grund dafür ist, dass meine DB einige indizierte Ansichten enthält und alle Einfügen/Aktualisierung/Löschen von Tabellen, die Teil einer indizierten Ansicht sind, fehlschlagen, wenn die Verbindung nicht an Aritabort auftritt. Sogar ausgewählt gegen die indizierte Ansicht selbst fehlschlägt fehl, wenn der Tipp mit (noexpand) verwendet wird (den Sie in der SQL Standard Edition verwenden müssen, um den Leistungsvorteil der indizierten Ansicht zu erhalten).

Gibt es irgendwo im Datenkontext, den ich angeben kann, auf das ich diese Option möchte? Oder irgendwo im Code kann ich es schaffen?

Ich habe eine ungeschickte Problemumgehung verwaltet, aber ich mag es nicht ... Ich muss eine gespeicherte Prozedur für jede Auswahl/Einfügung/Aktualisierung/Löschen/Löschen erstellen und in diesem Proc First Run Set Aritabort ein weiteren und dann einen weiteren Proc. Dies enthält die tatsächliche Auswahl/Einfügung/Aktualisierung/Löschen. Mit anderen Worten, der erste Proc ist nur ein Wrapper für den zweiten. Es funktioniert nicht, um nur Set Aritabort auf den Code auszuwählen/einfügen/aktualisieren/löschen.

War es hilfreich?

Lösung

Am Ende habe ich meine eigene Methode in meiner eigenen "Helfer" -Klasse geschrieben, um den DataContext zu erstellen und diese jedes Mal zu verwenden, wenn ich einen DataContext benötige, z. B.

      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)

Die Idee hier ist, den DataContext -Konstruktor zu verwenden, der eine Verbindung als Parameter nimmt. Ich erstelle und öffne eine SQLConnection, reite "Set aritabort ..." darauf aus und übergende sie an den DC (Gutschrift geht an das Poster hier).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top