Если вы используете Linq To Sql , вы можете использовать StringWriter
, чтобы получить Sql, сгенерированный Linq To Sql. Вот пример, который устанавливает DataContext
Log и выполняет простой запрос, чтобы наконец показать в sqlLinqToSql.Text
SQL.
DataClasses1DataContext db = new DataClasses1DataContext();
StringWriter sw = new StringWriter();
db.Log = sw;
this.gridLinqToSql.DataSource = db.Customers.Where(c => c.CustomerID.StartsWith("A"));
this.gridLinqToSql.DataBind(); //Here is when the Linq query will be executed.
sqlLinqToSql.Text = sw.GetStringBuilder().ToString();
Если вы используете Linq To Entity , все по-другому. Вам необходимо вызвать из ObjectQuery ToTraceString()
:
var cust = (from c in context.Customers select c);
string sql = ((ObjectQuery)cust).ToTraceString();