2013-07-19 33 views
9

Tôi có một kịch bản mà tôi cần trả về một DataTable từ một truy vấn bằng Dapper. Làm thế nào để trả về một DataTable từ một Dapper truy vấn?Dapper to DataTable

DataTable dt = connection.Query ("SELECT * FROM table");

+0

Dapper không phải là công cụ chính xác cho công việc này. Như Vivek nói, Dapper được thiết kế để ánh xạ trực tiếp tới các đối tượng, không phải là 'Số liệu'. – Chris

Trả lời

6

Sẽ không có lợi thế nào trong sử dụng công cụ lập bản đồ cho một kịch bản có liên quan đến DataSet. Và đặc biệt, ví dụ cụ thể của bạn (không có bất kỳ thông số nào vv) quá tầm thường (không có nghĩa là tiêu cực - đơn giản là khách quan) mà bạn cũng có thể sử dụng trực tiếp ExecuteReader hoặc sử dụng DbDataAdapter

Tôi đang mở, để lộ một API trên người lập bản đồ cho thấy API IDataReader từ người lập bản đồ - bạn có thể cấp dữ liệu đó cho bất kỳ người tiêu dùng nào bạn muốn, bao gồm DataSet/DataTable. Nhưng tôi thực sự phải đặt câu hỏi: điều gì sẽ là điểm trong việc thực hiện ví dụ này thông qua người lập bản đồ? Nó có thể có ý nghĩa hơn nếu bạn ít nhất là sử dụng dapper để xử lý các thông số (tôi damned hài ​​lòng với cách xử lý thông số làm việc ra, sự thật được nói).

+0

Tôi cảm thấy lớp học làm việc chung cho ReportViewer. Tham vấn với Dapper và DynamicParameters. Điều tương tự cũng không hoạt động với dữ liệu động từ Dapper, chỉ có DataTable. Vì lý do này DataTable. Trừ khi có một cách để làm việc với ReportViewer với truy vấn Dapper. – user2421145

+3

Có, đó là tất cả các từ. Tôi nhận ra nhiều người trong số họ. Nó không thay đổi bất cứ điều gì mặc dù: đó chỉ đơn giản là không phải là một kịch bản dapper mục tiêu rõ ràng vào lúc này. –

+0

Tôi đã xem xét điều này trong khi nghiên cứu cách nạp các đối tượng động Dapper vào SqlBulkCopy để có, thêm một IDataReader (hoặc thậm chí IDataRecord) vào kiểu động sẽ rất hữu ích. Tham số ràng buộc là đủ tốt để có ích một mình trong kịch bản này. – James

1

Huh? Dapper chỉ cung cấp các phương thức mở rộng trên ADO.NET - để bạn không phải đối phó với DataTables và DataSets!

Nếu DataTables và DataSet là những gì bạn muốn - bạn vẫn có thể sử dụng vani ADO.NET - SqlDataAdapter (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx) sẽ cung cấp cho bạn tất cả các DataTables trái tim của bạn mong muốn :)

+1

Những gì tôi cần là để nuôi một ReportViewer với dữ liệu từ một Dapper truy vấn. Làm thế nào để làm điều đó với Dapper? this.reportViewer.LocalReport.DataSources.Clear(); DataTable dt = new DataTable(); dt = this.inputValuesTableAdapter.GetData(); Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource (dt.TableName, dt); this.reportViewer.LocalReport.DataSources.Add (rprtDTSource); this.reportViewer.RefreshReport(); – user2421145

+0

@ user2421145 bạn đã thử mà không có *** Dapper ***? bất kỳ giải pháp về nó? – Kiquenet