Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tôi có một Bảng Thẻ. Làm thế nào để Chèn hàng loạt bằng LINQ?

LINQ là một truy vấn công nghệ, nhưng tôi nghĩ chúng tôi biết bạn muốn nói gì; bạn có thể muốn cụ thể hơn một chút cho dù đây là LINQ-to-SQL hay Entity Framework. Bạn cũng có thể muốn làm rõ "số lượng lớn" có nghĩa là gì trong trường hợp của mình ... đối với 10-100 bản ghi, bạn có thể sử dụng một câu trả lời khác cho 10.000 bản ghi (trong đó SqlBulkCopy vào một bảng dàn và một thủ tục được lưu trữ để nhập tại db sẽ là ý tưởng tốt nhất).

Đối với một số lượng tương đối thấp - chỉ cần sử dụng công cụ ORM của bạn để tìm các bản ghi - ví dụ với LINQ-to-SQL (có thể với một giao dịch có thể tuần tự hóa kéo dài) - và sử dụng C # để minh họa ( được cập nhật để hiển thị vòng lặp và bộ nhớ cache ):

Dictionary<string,Tag> knownTags = new Dictionary<string,Tag>();
foreach(... your data ...) {
    Tag tag;
    if(!knownTags.TryGetValue(tagName, out tag)) {
        tag = ctx.Tags.SingleOrDefault(t => t.Name == tagName);
        if(tag == null) {
            tag = new Tag { Name = tagName };
            ctx.Tags.InsertOnSubmit(tag);
        }
        knownTags.Add(tagName, tag);
    }
    // insert video tag
}
ctx.SubmitChanges();

Trên thực tế, vì lý do hiệu suất, tôi tự hỏi liệu đây có thể là một trong những trường hợp mà khóa tự nhiên có ý nghĩa hay không - tức là sử dụng Tag (varchar ) làm khóa chính và sao chép nó (làm khóa ngoại) trong VideoTags - thì bạn không cần tham gia vào các thẻ Tags bảng mọi lúc.

Nếu các số lớn hơn, khá dễ dàng để sử dụng SqlBulkCopy; chỉ cần đặt dữ liệu vào một DataTable và đẩy nó qua, sau đó thực hiện công việc trong TSQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - Cách hiển thị các bản ghi gần đây nhất dựa trên ngày tháng trong hai bảng

  2. truy vấn cột nhị phân bằng cách sử dụng như trong máy chủ sql

  3. Lỗi tên cột không rõ ràng

  4. Sự khác biệt giữa Chọn duy nhất và Chọn riêng biệt

  5. Cách SHOWPLAN_XML hoạt động trong SQL Server