byte[]
をパラメーターとして渡しているクエリがあります。 SQLクエリを取得し、Management Studioでそのクエリを実行してデバッグしようとしています。どうすればそこからSQLステートメントを抽出できますか?
committeeMember =
db.Committee_Member.FirstOrDefault(x => x.Customer_Number == activity.Contact.Number
&& x.Position_Start_Date.Value.Year == activity.EndDate
&& x.Committee_Id == activity.Committee.Id && x.Cancelled != 1);
デバッガーでcommiteeMember
変数の上にマウスを移動します-生成されたSQLクエリが表示されます:
これは、クエリに対してToString()
が返すものです。 ToStringを呼び出すことにより、同じ生成されたSQLクエリを手動で取得できます。
_string sql = committeeMember.ToString();
_
このオーバーライドされたメソッドは、内部で ObjectQuery.ToTraceString()
を呼び出し、データソースで実行されるコマンドを返します。
また、SQLプロファイラーまたはEntity Frameworkプロファイラーを使用して、実行されたSQLクエリを確認できます。
ちなみに、LINQ to SQLはエンティティフレームワークではありません。前者の場合、 _[yourDataContext].Log = Console.Out
_ (または 他のストリームライター )を設定してクエリを取得できます。
持っているクエリで、ToString
トリックを実行できるように次のように記述することを検討してください。
_var committeeMemberQuery =
db.Committee_Member.*WHERE*
(x =>
x.Customer_Number == activity.Contact.Number
&& x.Position_Start_Date.Value.Year == activity.EndDate
&& x.Committee_Id == activity.Committee.Id && x.Cancelled != 1
);
var committeeMember = committeeMemberQuery.FirstOrDefault();
_
これでcommitteeMemberQuery.ToString()
を実行できますが、パラメーター情報は取得できません( _DataContext.Log = Console.Out
_ で取得できますが、これもEntity Frameworkではなく、LINQ to SQLです。