LINQ to SQL 关联映射

发布于 2024-11-03 19:18:32 字数 591 浏览 1 评论 0原文

我正在开发一个简单的命令行应用程序来自学一些 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.

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

I am working on a simple command line app to teach myself some LINQ to SQL in C#. I have a SQL Server 2008 instance and I am trying to look in MSDB for the Jobs currently setup on the SQL Server. I want to output the Job Name a dot and the Step name and the actual SQL statement to do that is the following:

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

I am at a loss for how to establish the relationship between SysJobs and SysJobSteps in the C# code and I keep getting the following error message:

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

Please advise what is the best way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不奢求什么 2024-11-10 19:18:32

两个表都必须有定义的主键。使用Column(Name="whatever_id", IsPrimaryKey=true)

Both tables must have a defined primary key. Use Column(Name="whatever_id", IsPrimaryKey=true)

甜味拾荒者 2024-11-10 19:18:32

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

You need to create a dbml file first, adding those two tables and then use something like this:

 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};

            }

To create a dbml with system tables you need to do create a connection first, then right-click the server -> change view -> object type, you should now see all system tables. Then add the two tables.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文