Использование наборов данных с Dapper - PullRequest
0 голосов
/ 08 марта 2019

Я хотел бы использовать Dapper, чтобы составить список классов без необходимости определять все имена классов. Я знаю, что это немного лениво, но это уже определено в Visual Studio.

Итак, в Visual Studio я создал DataSet и добавил таблицу. Код, сгенерированный VS, включает следующее:

    public partial class MyTableRow : global::System.Data.DataRow {

        private MyTableDataTable tableMyTable;

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
        internal MyTableRow(global::System.Data.DataRowBuilder rb) : 
                base(rb) {
            this.tableMyTable = ((MyTableDataTable)(this.Table));
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
        public string rectype {
            get {
                return ((string)(this[this.tableMyTable.rectypeColumn]));
            }
            set {
                this[this.tableMyTable.rectypeColumn] = value;
            }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
        public string acctdet {
            get {
                return ((string)(this[this.tableMyTable.acctdetColumn]));
            }
            set {
                this[this.tableMyTable.acctdetColumn] = value;
            }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
        public string acctdet2 {
            get {
                return ((string)(this[this.tableMyTable.acctdet2Column]));
            }
            set {
                this[this.tableMyTable.acctdet2Column] = value;
            }
        }

         etc, etc

Итак, в моем методе я просто хотел бы использовать этот код таким образом:

     // no errors on this
     public List<MyDataSet.MyTableRow > GridList  = new List<MyDataSet.MyTableRow >();

Тогда мой метод, который использует Dapper для заполнения списка:

 void FillDataDapper()
    {

        IDbConnection cx = new SqlConnection(myConnectionString);
        string query = "SELECT *  FROM myTable" ; 
        GridList = cx.Query<MyDataSet.MyTableRow >(query).ToList();

    }

Компилируется, но я получаю следующую ошибку во время выполнения:

Для материализации MyDataSet + MyTableRow требуется конструктор по умолчанию без параметров или одна совпадающая подпись (список всех моих полей)

Похоже, что это был бы невероятно удобный ярлык, если бы кто-то мог немного указать путь. Буду очень признателен за любую помощь.

Спасибо:)

...