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)) {
    ...
  }
}

但是如果我做同样的事情,只是替换上面EntityConnectionSqlConnection代码片段,我会在第 5 行得到一个运行时错误:

查询语法无效。靠近标识符“arithabort”,第 1 行,第 5 列。

我猜这与 Linq2Sql 是为 SQL Server 硬连线的事实有关,而 EF 可以在其他数据库上工作。那么诀窍是什么?

4

1 回答 1

2

SqlConnection不是特定于 linq-to-sql 或 EF,您仍然可以将代码与 EF 一起使用。但是您必须创建一个接收 SqlConnection 的 EntityConnection。

EntityConnection.CreateCommand创建一个EntityCommand,它期望 Entity SQL 作为命令文本,没有原始 SQL 命令。

另一种方法是使用上下文的ExecuteStoreQuery命令 (ObjectContext) 或context.Database.ExecuteSqlCommand(DbContext)。

于 2013-05-08T10:20:24.760 回答