2016-06-22 56 views
19

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

+0

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

+0

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ị –

Trả lời

46

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 đồ)
+2

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ị. –

+3

@PanagiotisKanavos tốt, tôi đã bao gồm điều đó trong "chính xác" trong viên đạn đầu tiên :) –

+0

giải thích tốt –

Các vấn đề liên quan