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

trong khi trên IDataReader.Read không hoạt động với trả về lợi nhuận nhưng foreach trên trình đọc thì

Nó không phải là while so với foreach điều đó tạo ra sự khác biệt. Đó là lệnh gọi đến .Cast<T>() .

Trong mẫu đầu tiên, bạn đang mang lại giống nhau đối tượng trong mỗi lần lặp của vòng lặp while. Nếu bạn không cẩn thận, bạn sẽ hoàn thành trình lặp lợi nhuận trước khi thực sự sử dụng dữ liệu và DataReader sẽ bị loại bỏ. Điều này có thể xảy ra nếu bạn gọi .ToList() sau khi gọi phương thức này. Điều tốt nhất bạn có thể hy vọng là mọi bản ghi trong danh sách có cùng giá trị.
(Mẹo chuyên nghiệp:hầu hết thời gian bạn không muốn gọi .ToList() cho đến khi bạn hoàn toàn phải làm. Tốt hơn là chỉ làm việc với các bản ghi IEnumerable).

Trong mẫu thứ hai, khi bạn gọi .Cast<T>() trên datareader, bạn đang tạo một bản sao dữ liệu một cách hiệu quả khi nó lặp lại qua mỗi bản ghi. Bây giờ bạn không còn mang lại cùng một đối tượng nữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ dữ liệu trong MySQL dưới dạng JSON

  2. Cách ghi chính xác các chuỗi UTF-8 vào MySQL thông qua giao diện JDBC

  3. Kết nối động Laravel với các cơ sở dữ liệu khác nhau cùng một lúc

  4. Có cách nào để tính toán chênh lệch thời gian trong MySQL bằng cách sử dụng một lựa chọn không

  5. tạo jcomponents bằng cơ sở dữ liệu