批量插入或使用C#和SQL服务器一次加载大量数据的另一种方法?

时间:2010-07-14 19:29:37

标签: c# sql sql-server .net-3.5

我有一个应用程序,用户可以上传文件并将文件与项目相关联。项目可以重复。以下是对象的示例:

Public class Project{
    Int ProjectId{get; set;}
    string ProjectName{get;set;}
    List<int> FileIds{get;set}
}

当我复制项目时,比如说,将相同文件与新项目相关联的最佳方法是什么?我有两个项目和文件表。我有一个关系表,其中包含项目ID和文件ID的外键。当我创建一个新的项目ID时,我想将文件ID批量插入关系表。迭代List和惰性一次是否一样好或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

如果您正在复制的项目已经在SQL Server上,那么最有效的方法是在SQL Server上进行复制,这很简单:

INSERT INTO Files (ProjectId,FileId) SELECT 2 As ProjectId, FileId FROM Files WHERE ProjectId = 1

新项目为ProjectId = 2且旧项目为ProjectId = 1

答案 1 :(得分:0)

将SqlBulkCopy或表值参数用于存储过程。