C# LINQ到SQL关联映射

C# LINQ到SQL关联映射,c#,.net,sql-server,linq,linq-to-sql,C#,.net,Sql Server,Linq,Linq To Sql,我正在开发一个简单的命令行应用程序,教自己一些C#中的LINQ to SQL。我有一个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

我正在开发一个简单的命令行应用程序,教自己一些C#中的LINQ to SQL。我有一个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
我不知道如何在C#代码中建立SysJobs和SysJobSteps之间的关系,我一直收到以下错误消息:

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

请告知执行此操作的最佳方法是什么?

您需要先创建一个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,您需要先创建连接,然后右键单击服务器->更改视图->对象类型,您现在应该可以看到所有系统表。然后添加这两个表

两个表都必须有一个已定义的主键。使用
列(Name=“whatever\u id”,IsPrimaryKey=true)

给我们一些linq to sql代码!我在这里用C#发布了我试图实现的示例代码:我非常确定这是解决大多数人问题的答案。