मैंने इस समस्या को हल करने के लिए एक nuget पैकेज (SqlBulkTools) प्रकाशित किया।
यहां एक कोड उदाहरण दिया गया है जो बल्क अपरर्ट प्राप्त करेगा।
var bulk = new BulkOperations();
var books = GetBooks();
using (TransactionScope trans = new TransactionScope())
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager
.ConnectionStrings["SqlBulkToolsTest"].ConnectionString))
{
bulk.Setup<Book>()
.ForCollection(books)
.WithTable("Books")
.AddAllColumns()
.BulkInsertOrUpdate()
.MatchTargetOn(x => x.ISBN)
.Commit(conn);
}
trans.Complete();
}
बहुत बड़ी तालिकाओं के लिए, टेबल लॉक जोड़ने और गैर-संकुल अनुक्रमणिका को अस्थायी रूप से अक्षम करने के विकल्प हैं। अधिक उदाहरणों के लिए SqlBulkTools Documentation देखें।