如何在Linq中将Arithabort设置为实体?

时间:2013-05-08 10:11:23

标签: c# linq-to-entities entity-framework-5

我已经找到了大量关于如何在Linq中将Arithabort设置为SQL的答案,但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)) {
    ...
  }
}

但如果我做同样的事情,只需在上面的代码片段中替换EntityConnection中的SqlConnection,我就会在第5行遇到运行时错误:

  

查询语法无效。标识符'arithabort',第1行,第5列附近。

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

1 个答案:

答案 0 :(得分:2)

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

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

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