2013-11-25 3 views
0

Как я могу получить 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).

+0

Я не вижу, как вы бы прийти к EXISTS из LoadWith. LoadWith создает JOIN. Если вы выполните 'query.ToString()', вы увидите это. –

+0

AH, может быть, мне следовало бы уточнить, что я не знаю, как работает LoadWith под капотом, хотя я в целом понимаю, как работают запросы Linq-To-Sql. Когда я 'GetCommand', он не показывает соединение ... – Crisfole

ответ

0
var query = ctx.Widgets.Where(x => x.IsNeeded); 

должен быть

var query = ctx.Widgets.Where(x => x.IsNeeded == 1); 
+0

Я думаю, что это относится к комментарию .... – Crisfole

+0

Кроме того,' bit' в SqlServer переводится как логическое. – Crisfole

+0

@ChristopherPfohl - Я понятия не имею, какой тип IsNeeded, так как вы не показали этого в своем квесте. Внесите изменения с правильным типом и посмотрите результат, который вы хотите. Или нет. Независимо от меня. – Hogan

Смежные вопросы