C# SQL-使用SELECT插入多行

C# SQL-使用SELECT插入多行,c#,bulkinsert,sql-insert,sql-server-2014,multiple-insert,C#,Bulkinsert,Sql Insert,Sql Server 2014,Multiple Insert,我正在寻找一种有效的方法来执行多行插入,其中包含来自多个表的一些值 基本上,我正在解析一个XML并创建一个自定义对象列表,然后将其插入数据库。这些行的一些值包含在XML中,但其他值需要从其他表中检索 例如: 两张表: Person: PersonID (identity), Name (nvarchar), CountryID Country (a lookup table including my id and the one I get from the XML) Countr

我正在寻找一种有效的方法来执行多行插入,其中包含来自多个表的一些值

基本上,我正在解析一个XML并创建一个自定义对象列表,然后将其插入数据库。这些行的一些值包含在XML中,但其他值需要从其他表中检索

例如:

两张表:

Person: 
  PersonID (identity), Name (nvarchar), CountryID

Country (a lookup table including my id and the one I get from the XML) 
  CountryID (identity) , CountryXMLID, Name
我在C中浏览我的列表,创建一个Teamscustom对象的列表,然后我想平均每分钟执行1000行:

INSERT INTO Person (Name, CountryID)
SELECT 'George', CountryID FROM Countries WHERE CountryXMLID = '1';
XML中包含人名和国家/地区提要id。我想使用Person表中的ID,而不是XML中的ID

请有人给我一个有效的方法来执行这些插入的建议


我一直在考虑创建一个DataTable,然后使用SQLBulkCopy,使用存储过程在DataTable中运行一个循环,并对每个数据表执行上述语句,还有EntityFramework、Telerik Data Access等ORM。

您看过表值参数了吗?感谢您的快速回复。。是的,我正在考虑使用从xml中获取的参数创建一个datatable,并将其提交给一个接受表值参数的存储过程。它将运行一个循环,并为每个迭代执行上述语句。。这是否有效?为了实现高性能,请使用C的类从我之前阅读的内容到现在我同意Andomar的观点,SQLBulkCopy是一种高性能的方法,但是从其他表检索值又如何?将SQLBulkCopy复制到单独的暂存表可能更有效,然后用select执行一次插入:insert INTO Person Name,CountryID select s.Name,c.CountryID FROM PersonStage s join Countries c on s.CountryXMLID=c.CountryXMLID