Как я могу получить SqlCommand
s для запросов, используемых для получения дочерних записей при работе с параметрами LoadWith
?Linq-To-Sql LoadWith команды
Предположим схему, как это (очень сокращенную, но должен объяснить, что происходит):
Widget:
Id int not null identity(1,1) primary key
IsNeeded bit not null
DooHickey
Id int not null identity(1,1) primary key
WidgetFk int not null references Widget(Id)
Перевод на Linq-To-Sql классов с помощью перетаскивания в Visual Studio.
Пример:
using(var ctx = GetDataContext()) {
var dlo = new DataLoadOptions();
dlo.LoadWith(widget => widget.DooHickeys);
ctx.LoadOptions = dlo;
var query = ctx.Widgets.Where(x => x.IsNeeded);
// The "select * from Widget where IsNeeded = 1" command
var mainCmd = (SqlCommand)ctx.GetComamnd(query);
// Want Command for getting the DoHickeys
}
Это будет сделать проще автоматизировать создание SqlDependencies для более DataContext
и IQueryable
. Возможно, я делаю это нелегко, и кто-то уже решил это ... Я бы принял сторонний инструмент (возможно, NuGet installable), который не вводил новые зависимости (например, System.Web).
Я не вижу, как вы бы прийти к EXISTS из LoadWith. LoadWith создает JOIN. Если вы выполните 'query.ToString()', вы увидите это. –
AH, может быть, мне следовало бы уточнить, что я не знаю, как работает LoadWith под капотом, хотя я в целом понимаю, как работают запросы Linq-To-Sql. Когда я 'GetCommand', он не показывает соединение ... – Crisfole