3

デフォルトでは、Linq To SQL が使用していると思われる OLEDB 接続の場合、SQL 接続オプション ARITHABORT は OFF です。ただし、ONにする必要があります。その理由は、DB にいくつかのインデックス付きビューが含まれており、接続で ARITHABORT がオンになっていない場合、インデックス付きビューの一部であるテーブルに対する挿入/更新/削除操作が失敗するためです。WITH(NOEXPAND) ヒントが使用されている場合は、インデックス付きビュー自体に対する選択でさえ失敗します (インデックス付きビューのパフォーマンス上の利点を得るには、SQL Standard Edition で使用する必要があります)。

このオプションをオンにすることを指定できるデータ コンテキストの場所はありますか? またはコードのどこかで私はそれを行うことができますか??

不器用な回避策を管理しましたが、好きではありません....選択/挿入/更新/削除操作ごとにストアドプロシージャを作成する必要があり、このプロシージャで最初にSET ARITHABORT ONを実行し、次に別のプロシージャを実行します実際の選択/挿入/更新/削除が含まれています。つまり、最初のプロシージャは 2 番目のプロシージャの単なるラッパーです。選択/挿入/更新/削除コードの上に SET ARITHABORT ON を置くだけでは機能しません。

4

1 に答える 1

3

私がやったのは、独自の「ヘルパー」クラスに独自のメソッドを記述してデータコンテキストを作成し、データコンテキストが必要になるたびにこれを使用することでした。

      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)

ここでの考え方は、接続をパラメーターとして受け取る datacontext コンストラクターを使用することです。SqlConnection を作成して開き、"set arithabort..." を実行して、DC に渡します (クレジットはここのポスターに送られます)。

于 2010-06-15T22:17:53.133 に答える