Tôi muốn hiểu khi nào một số người thực sự cần phải suy nghĩ về việc sử dụng Dapper. Ngoài ra tôi muốn hiểu những ưu và khuyết điểm của việc so sánh Dapper Vs ADO.NETTại sao một người nên sử dụng Dapper? Ngoài ra bất cứ ai có thể bình luận về Dapper Vs ADO.NET Ưu và khuyết điểm
Trả lời
Dapper chỉ là một công cụ. Những gì nó không là:
- làm cho nó trivially dễ dàng để parameterize một cách chính xác các truy vấn
- làm cho nó trivially dễ dàng để thực hiện truy vấn (vô hướng, đa hàng, đa lưới, và không kết quả)
- làm cho nó trivially dễ dàng để chuyển kết quả vào đối tượng
- rất hiệu quả và nhanh chóng
gì nó không làm là:
- tạo ra một mô hình lớp học cho bạn
- tạo ra các truy vấn cho bạn
- đối tượng theo dõi và thay đổi của họ vì vậy bạn chỉ có thể gọi
SubmitChanges()
(hoặc bất kỳ)
Thư viện đoan trang thô không cung cấp các tính năng CRUD, nhưng gói bổ sung "đóng góp" không cung cấp CRUD cơ bản. Về cơ bản, nó không phải là ORM toàn phần, nhưng nếu bạn chỉ muốn chạy truy vấn mà không cần phải chiến đấu một ORM hoặc trả chi phí liên quan đến ORM, thì điều này là khá tuyệt vời. Nếu bạn không biết SQL, thư viện thô có thể không dành cho bạn (tuy nhiên, "contrib" nên được sử dụng tốt), nhưng nhiều người không chỉ biết SQL, nhưng họ muốn được kiểm soát của SQL (thay vì cho phép ORM đưa ra một số giải thích về ý định của bạn chưa được tối ưu hóa, v.v.).
Nói tóm lại, lý do có thể là:
- bạn muốn hiệu suất thực hiện liệu tuyệt vời với các chi phí tối thiểu
- bạn muốn giữ quyền kiểm soát SQL của bạn
- bạn không cần hoặc muốn object- theo dõi các tính năng của một ORM đầy đủ chất béo
đối với "vs ADO.NET":
- ADO.NET liệu liên quan đến một nhiều nhiều mã để viết và rất nhiều cạnh trường hợp cần nhớ về (mà giao dịch đoan trang với nội mà bạn không cần phải lo lắng về họ)
- nhưng nó không phải là thực sự nhanh hơn - người lập bản đồ có rất nhiều chương trình meta để lưu trữ và sử dụng lại các chiến lược khi đã thực hiện những gì cần cho truy vấn của mình
- nếu bạn đang sử dụng các tính năng dành riêng cho nhà cung cấp không có sẵn trong ADO thô.NET (ví dụ: chuyển/tìm nạp dữ liệu
SqlGeometry
), không phải là trực tiếp availalbe in dapper - bạn cần triển khai giao diện để cho biết cách xử lý kịch bản của bạn, nhưng điều đó không khó (lưu ý rằng Ví dụSqlGeometry
được xử lý bởi thư viện bổ sung dành cho người lập bản đồ)
Một sự khác biệt, Dapper làm cho việc sử dụng các truy vấn được tham số hóa dễ dàng đến mức mọi người quên giới thiệu các lỗi SQL injection. giá trị. –
@PanagiotisKanavos tốt, tôi đã bao gồm điều đó trong "chính xác" trong viên đạn đầu tiên :) –
giải thích tốt –
- 1. ai đã thử neo4j vs titan - ưu và khuyết điểm
- 2. Machinist vs FactoryGirl - ưu và khuyết điểm
- 3. OcMock vs OcMockito - ưu và khuyết điểm là gì
- 4. Drools vs JBPM? sự khác biệt, ưu và khuyết điểm
- 5. Tại sao tôi nên sử dụng BBCode nhưng không sử dụng HTML ở dạng bình luận?
- 6. ASP.NET Identity Bearer Token vs JWT Ưu và khuyết điểm
- 7. Tại sao # (băm) trong mẫu Dapper
- 8. Bất cứ ai sử dụng CouchDB?
- 9. Tại sao sử dụng SVN? Bất kỳ ưu điểm ẩn (trên GIT/Mercurial/Bazaar) có?
- 10. Bất cứ ai cũng có một bản sao của MSIINV.EXE?
- 11. Sencha touch vs Ionic framework ưu & khuyết điểm
- 12. bất cứ ai có thể giải thích tại sao loại size_t được sử dụng với một ví dụ?
- 13. Bất cứ ai sử dụng Moles/Pex trong sản xuất?
- 14. Cách sử dụng Dapper với LINQ
- 15. Bất cứ ai sử dụng SvnMapper?
- 16. thông số bắt buộc, Dapper và System.Data.SqlClient.SqlException
- 17. Các kiểu trả về động Dapper
- 18. Sử dụng cách nào ưu tiên để kết hợp Autofac và Dapper
- 19. Dapper thể hóa đến một tuple
- 20. Mapping thực thể trong Dapper
- 21. Dapper SqlMapperExtensions/Dapper.Contrib?
- 22. Ưu và khuyết điểm của việc sử dụng công cụ tạo mẫu như Jade là gì?
- 23. Bất cứ ai nhìn thấy đầu ra 'một số' trong sân chơi khi sử dụng dictonaries?
- 24. Dapper và trong Điều kiện
- 25. Kết quả Dapper (Dapper Row) với Bracket Notation
- 26. Dapper & Oracle Clob type
- 27. Khi nào sử dụng diễn viên trong libgdx? Khuyết điểm và ưu điểm là gì?
- 28. là bất cứ ai làm bất cứ điều gì về 2038 time_t lỗi?
- 29. bất cứ ai có thể cho tôi biết tại sao UIImage.ciimage là null
- 30. Kết hợp khung thực thể, Dapper và SSDT?
Tự nghiên cứu. Bạn có thể đọc về xử lý ADO.NET thích hợp trong blog của tôi: http://blog.gauffin.org/2013/01/ado-net-the-right-way/ – jgauffin
Dapper sử dụng ADO.NET nhưng thực hiện truy vấn và ánh xạ kết quả cho các đối tượng dễ dàng hơn rất nhiều. Đó là nó - chỉ là nhanh nhưng dễ sử dụng hơn nhiều. PS: thật dễ dàng để sử dụng đúng các truy vấn được tham số hóa với Dapper mà mọi người quên giới thiệu các lỗi SQL injection do nối chuỗi giá trị –