Отображение ассоциации LINQ to SQL - PullRequest
7 голосов
/ 29 апреля 2011

Я работаю над простым приложением командной строки, чтобы научить себя LINQ to SQL в C #. У меня есть экземпляр SQL Server 2008, и я пытаюсь найти в MSDB задания, которые в данный момент установлены на SQL Server. Я хочу вывести Имя задания в виде точки, а также Имя шага и фактический оператор SQL, чтобы сделать это следующим образом:

use msdb
go

select j.name + '.' + s.step_name
from sysjobs j
join sysjobsteps s on j.job_id = s.job_id
order by j.name
go

Я не знаю, как установить связь между SysJobs и SysJobSteps в коде C #, и я получаю следующее сообщение об ошибке:

System.InvalidOperationException: Invalid association mapping for member 
'ServerCompare.Lib.Commands.SysJob.SysJobSteps'. 
'ServerCompare.Lib.Commands.SysJob' is not an entity.

Посоветуйте, пожалуйста, как лучше всего это сделать?

Ответы [ 2 ]

18 голосов
/ 11 апреля 2012

Обе таблицы должны иметь определенный первичный ключ.Используйте Column(Name="whatever_id", IsPrimaryKey=true)

3 голосов
/ 29 апреля 2011

Сначала необходимо создать файл dbml, добавив эти две таблицы, а затем использовать что-то вроде этого:

 using (var context = new DataClasses1DataContext())
            {
                var result = from s in context.sysjobs
                             orderby s.name
                             join sjs in context.sysjobsteps on s.job_id equals sjs.job_id
                             select new {Name = s.name + "." + sjs.step_name};

            }

Чтобы создать dbml с системными таблицами, сначала нужно создать соединение, затем щелкнуть правой кнопкой мыши по серверу -> изменить представление -> тип объекта, теперь вы должны увидеть все системные таблицы. Затем добавьте две таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...