DbSet.Add() thêm một thực thể duy nhất vào DbSet. Nhưng không có DbSet.AddRange() để thêm danh sách các thực thể. Có một phương pháp tôi có thể gọi trực tiếp từ EF cho phép tôi thêm một danh sách các thực thể? Nếu không, có lý do nào tại sao EF không cung cấp phương pháp như vậy?Cách thêm danh sách các thực thể vào DbSet
Trả lời
Nhận xét của Eranga được cho là đúng sự thật. Tôi đoán rằng mối quan tâm thực sự là những gì nên được thực hiện nếu bất kỳ thực thể nào trong danh sách có thuộc tính khóa được đặt nếu khóa cho bảng bên dưới là cột nhận dạng:
- Ném ngoại lệ? HOẶC
- đặt khóa thành 0 để một thực thể mới có khóa khác sẽ được chèn vào? HOẶC
- cập nhật pháp nhân bằng cùng một khóa?
Vì lý do này, nó không có ý nghĩa quá nhiều để thực hiện AddRange() với lớp chung DbSet. Nếu bạn muốn một cái gì đó đặc biệt phù hợp nhu cầu của bạn, bạn có thể mở rộng DbSet như sau
public static class EFExtension
{
public static void AddRange<TEntity>(this DbSet<TEntity> dbSet, IList<TEntity> entities) where TEntity : class
{
foreach (TEntity e in entities)
{
dbSet.Add(e);
}
}
}
Trong EF6 cả DbSet.AddRange
và DbSet.RemoveRange
có sẵn.
Lý do để triển khai chúng là cải thiện hiệu suất, những gì được thực hiện bằng cách tắt DetectChanges
cho mỗi lần thêm hoặc loại bỏ một thực thể riêng biệt.
Thông tin chi tiết:
LƯU Ý: Không có tài liệu chính thức vẫn cho phương pháp này, như EF vẫn là RC1.
CẬP NHẬT: EF6 đã được phát hành và the official documentation for .AddRange() is here, nhưng giải thích về những gì đang xảy ra bên trong nó trong các liên kết ở trên.
- 1. Có thể tạo phương pháp chung để thêm các mục vào dbset khung thực thể không?
- 2. chắp thêm danh sách vào danh sách
- 3. Python: cách nối thêm các phần tử mới vào danh sách danh sách?
- 4. Thêm danh sách vào danh sách các danh sách trong R
- 5. Thêm mục nhập trống vào hộp tổ hợp được ràng buộc vào danh sách thực thể
- 6. Thêm chuỗi vào danh sách
- 7. Thêm đối tượng vào danh sách python
- 8. Tôi không thể thêm thành phần vào danh sách? UnsupportedOperationException
- 9. Cách cập nhật danh sách các thực thể hiệu quả
- 10. Thêm một danh sách vào danh sách khác trong java?
- 11. Phụ thêm mục vào danh sách trong danh sách hiểu
- 12. Lambda thêm các phần tử gia tăng vào danh sách
- 13. Thêm các mục vào danh sách/chuỗi trong Clojure
- 14. có thể thêm danh sách vào cấu trúc không?
- 15. Thêm các nút vào danh sách hoạt động
- 16. Thêm các phần tử vào danh sách từ điển
- 17. Thêm vào cuối danh sách trong LISP
- 18. Thêm vào danh sách 2D trong Python
- 19. Cách thêm vào Danh sách khi sử dụng Đa luồng?
- 20. Cách lập trình thêm danh sách bullet vào NSTextView
- 21. thêm vào danh sách trong defaultdict
- 22. Parallel.ForEach với việc thêm vào danh sách
- 23. Cách thêm vào danh sách "Mới từ Mẫu"?
- 24. Thêm các mục vào danh sách từ LINQ var
- 25. Cách thêm nhiều tệp vào danh sách phát
- 26. Cách thêm mục vào đầu danh sách trong ListBox?
- 27. Nhà soạn nhạc - Cách thêm gói riêng vào danh sách
- 28. cách thêm bạn mới vào danh sách trong xmpp
- 29. Cách thêm thư viện vào Danh sách tham khảo Xamarin
- 30. Thêm vào danh sách so với Tăng
Bạn có thể viết một phương pháp mở rộng đơn giản để đạt được điều này. – Eranga
Đây là những gì tôi đang làm việc ngay bây giờ. Điều làm tôi bối rối là lý do tại sao EF không cung cấp nó? – hshen
Nó chỉ là một phương pháp tiện ích mà bất cứ ai cũng có thể viết. Có rất nhiều lớp sưu tập không có phương thức 'AddRange'. Cung cấp một API đơn giản với chức năng cốt lõi tốt hơn là một giao diện lộn xộn. – Eranga