更好的是来自Linq的ExecuteQuery和ExecuteCommand

时间:2011-07-25 10:52:58

标签: linq

我在Linq工作 现在我想知道哪个更好,然后从下面运行一个SQL查询。

1)ExecuteQuery

2)执行命令

2 个答案:

答案 0 :(得分:2)

两种方法ExecuteQuery和ExecuteCommand都是LINQ DataContext的方法。对于LINQ to SQL无法充分提供特定方案的情况,它们是传递机制。你很少会在LinqToSql中使用这些方法,因为你会失去LINQ的表达能力,这是使用LINQ的主要原因。您也将失去在查询中使用强类型变量的价值,这是使用LINQ的另一个主要优势。

构造SQL查询字符串并将它们直接传递给数据库被认为是糟糕的编程习惯,因为从字符串元素构造的SQL命令已经成为数据库黑客攻击的途径,称为SQL注入。所以一般来说,建议避免使用ExecuteQuery和ExecuteCommand,除非绝对必要且非常谨慎。

现在我说了所有这些,这里是对何时使用这些方法的解释。 ExecuteQuery将用于执行Select语句,而ExecuteCommand将用于执行Insert,Update,Delete或调用存储过程。

但是,您应该使用LINQ查询语法或LINQ lambda语法进行SQL调用,而不是使用ExecuteQuery或ExecuteCommand。

答案 1 :(得分:0)

你可以看到ExecuteCommand的返回类型是int,所以如果你想截断table / DROP DATABASE / identity reset或检查当前值/设置ANSI nulls(返回结果的地方),可以使用它。 ExecuteQuery返回类型是IEnumerable,因此它用于您提供的SQL语句返回记录集的情况。

如果有人有更多见解,请添加您的评论。