2012-12-08 33 views
0

我正在使用SqlBulkCopy類對我的數據庫進行批量插入/更新。數據插入/更新後,我想用它做更多的邏輯。使用IDataReader從SqlBulkCopy返回記錄

目前,我的IDataReader有一組要插入和更新的記錄。針對數據庫的所有操作都能正常工作但是,寫入數據後,IDataReader對象不再有任何行。

有沒有一種方法來保留行,併爲插入的記錄填寫自動生成的唯一標識符字段?

這裏是我的代碼片段:

public IDataReader DoBulkCopy<T>(List<T> DataToInsert, string DestinationTableName) 
    { 
     var BulkCopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString, SqlBulkCopyOptions.KeepNulls); 
     BulkCopy.BulkCopyTimeout = 0; 
     BulkCopy.BatchSize = 50; 
     BulkCopy.DestinationTableName = DestinationTableName; 

     IDataReader reader = DataToInsert.AsDataReader(); 
     BulkCopy.WriteToServer(reader); 
     BulkCopy.Close(); 

     return reader; 
    } 

在此先感謝。

回答

0

經過大量研究,我已經得出結論,這是不可能的。我能夠想出一個解決方法。我所做的是在執行查詢之前將DateTime.Now()寫入變量。執行查詢後,我對LastUpdated時間戳字段大於插入/更新之前記錄的DateTime變量的所有記錄執行了select查詢。

請注意,這在我的方案中正常工作,因爲此表中的數據僅由此調度程序插入/更新。如果這是一個數據可能來自多個地方或用戶的應用程序,則需要重新考慮或調整此方法。