在SQL Server表中到达子记录

rem*_*rem 5 c# sql sql-server linq-to-sql

出于我缺乏SQL Server经验并考虑到此任务是业务线应用程序的常用任务,我想问一下,可能有一种标准的常用方法来执行以下数据库操作:

假设我们有两个表,彼此连接由一对多的关系,例如SalesOderHeader和SalesOrderLines

http://s43.radikal.ru/i100/1002/1d/c664780e92d5.jpg

字段SalesHeaderNo是SalesOderHeader表中的PK和表中的FK SalesOrderLines.

在前端应用程序中,用户SalesOderHeader使用例如日期范围选择表中的一些记录,或IsSelected通过单击GridView中的复选框字段来选择字段.然后,用户在选定的销售订单范围内执行一些操作(让它只是"移动到另一个表").

我的问题是:

在这种情况下,我如何能够SalesOrderLines以尽可能简单,正确,快速和优雅的方式在表中访问子记录,以便对这些子记录执行相同的操作(在我们的情况下,"移动到另一个表")?

mar*_*c_s 2

如果您接受基于 T-SQL 的解决方案(而不是 C# / LINQ) - 您可以执行以下操作:

-- define a table to hold the primary keys of the selected master rows
DECLARE @MasterIDs TABLE (HeaderNo INT)

-- fill that table somehow, e.g. by passing in values from a C# apps or something

INSERT INTO dbo.NewTable(LineCodeNo, Item, Quantity, Price)
   SELECT SalesLineCodeNo, Item, Quantity, Price 
   FROM dbo.SalesOrderLine sol
   INNER JOIN @MasterIDs m ON m.HeaderNo = sol.SalesHeaderNo
Run Code Online (Sandbox Code Playgroud)

这样,您可以根据选择条件将子表中的整行行插入到新表中。