2013-07-19 18 views
9

Mam scenariusz, w którym muszę zwrócić DataTable z kwerendy przy użyciu Dapper. Jak mogę zwrócić DataTable z zapytania Dapper?Dapper to DataTable

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

+0

Dapper nie jest właściwym narzędziem do tej pracy. Jak mówi Vivek, Dapper jest przeznaczony do bezpośredniego mapowania obiektów, a nie "DataSet. – Chris

Odpowiedz

6

Nie będzie żadnej korzyści w ogóle używanie dappera do scenariusza obejmującego DataSet. Aw szczególności swoją konkretny przykład (bez parametrów etc.) jest tak banalne (nie oznaczało negatywnie - po prostu obiektywnie), które równie dobrze można użyć ExecuteReader bezpośrednio lub użyć DbDataAdapter

Jestem jednak otwarta na poddawanie Interfejs API na eleganckim interfejsie, który odsłania interfejs API IDataReader firmy dapper - możesz go przekazać dowolnemu zainteresowanemu użytkownikowi, dołączając: DataSet/DataTable. Ale naprawdę muszę zadać pytanie: jaki byłby punkt w wykonaniu tego przykładu przez dapper? To może mieć więcej sensu, jeśli przynajmniej używasz przystojniaka do obsługi parametrów (jestem cholernie zadowolony z tego, jak działało przetwarzanie parametrów, prawdę mówiąc).

+0

Czuję klasy pracującej Generic dla ReportViewer. Konsultacje z Dapper i DynamicParameters. To samo nie działa z danymi dynamicznymi z Dapper, tylko DataTable. Z tego powodu DataTable. O ile nie istnieje sposób pracy z ReportViewer z zapytaniem Dapper. – user2421145

+3

Tak, to są wszystkie słowa. Poznaję wielu z nich. To jednak nic nie zmienia: to nie jest po prostu konkretny cel scenariusza. –

+0

Natknąłem się na to podczas badania, jak zasilać dynamiczne obiekty Dappera w SqlBulkCopy, więc tak, dodanie IDataReadera (lub nawet IDataRecord) do typu dynamicznego byłoby bardzo przydatne. Powiązanie parametru jest wystarczająco dobre, aby mogło być użyteczne w tym scenariuszu. – James

1

Huh? Dapper zapewnia tylko metody rozszerzania przez ADO.NET - dzięki temu nie musisz zajmować się DataTables i DataSet!

Jeśli DataTables i zbiory danych, co chcesz - możesz nadal korzystać z wanilii ADO.NET - SqlDataAdapter (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx) daje wszystkie DataTables dusza zapragnie :)

+1

Potrzebuję nakarmić ReportViewer danymi z zapytania Daper. Jak to zrobić z 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 czy próbowałeś bez *** Dapper ***? jakieś rozwiązanie na ten temat? – Kiquenet