1

Linq to SQL で Arithabort をオンにする方法についてはたくさんの回答が見つかりましたが、Linq to Entities では何も見つかりませんでした。Linq to SQL では、次のことができます。

using (var conn = new SqlConnection(connectionString)){
  cmd = conn.CreateCommand();
  cmd.Connection.Open();
  cmd.CommandText = "set arithabort on;";
  cmd.ExecuteNonQuery(); // Line 5
  using (var db = new MyDataContext(conn)) {
    ...
  }
}

しかし、上記のコード スニペットを置き換えるだけでまったく同じことを行うと、5 行目で実行時エラーが発生しEntityConnectionます。SqlConnection

クエリ構文が無効です。識別子「arithabort」の近く、1 行目、5 列目。

Linq2Sql が SQL Server に組み込まれているのに対し、EF は他の DB で動作するという事実に関連していると思います。それで、トリックは何ですか?

4

1 に答える 1

2

これSqlConnectionは linq-to-sql または EF に固有のものではなく、EF でコードを引き続き使用できます。ただし、SqlConnection を受け取る EntityConnection を作成する必要があります。

EntityConnection.CreateCommandEntityCommandエンティティ SQL をコマンド テキストとして想定し、生の SQL コマンドを想定しない を作成します。

別の方法は、コンテキストのExecuteStoreQueryコマンド (ObjectContext) またはcontext.Database.ExecuteSqlCommand(DbContext) を使用することです。

于 2013-05-08T10:20:24.760 に答える