0

假设我有这 2 个表/域

[TableName("TableA")]
    [PrimaryKey("TableAId")]
    public class TableA
    {
        public int TableAId { get; set; }
        public string City { get; set; }

        public TableB TableB { get; set; }

        public TableA()
        {
            TableB = new TableB();
        }

    }

    [TableName("TableB")]
    [PrimaryKey("TableBId")]
    public class TableB
    {
        public int TableBId { get; set; }
        public string Name { get; set; }
    }


var sql = @" Select TableA.*, TableB.*
FROM         TableA INNER JOIN
                      TableB ON TableA.TableBId = TableB.TableBID";

// peta poco
var result = db.Query<TableA, TableB>(sql);

当我这样做时,TableA.TableB被填充并且TableAid 被填充但City为空。我必须指定要绑定的每一列。是否可以只使用星号而不是指定每一列?

4

1 回答 1

1

但是,您所拥有的应该可以工作,我认为可能发生的事情是由于这些情况的发生:

  1. 你有一个TableBId专栏TableA
  2. 您没有TableBId该类的属性TableA
  3. TableBId当您手动运行查询时,City 紧随TableA.*其后

映射通过按顺序遍历列来工作,并且处理通过以下方式工作:

  1. 如果通用参数列表中第一类的列将被映射并移至下一列(仍然使用第一类进行映射)
  2. 如果该列不在第一堂课上,那么它将认为第一堂课结束并移动到第二堂课,依此类推......
于 2012-12-15T00:55:10.363 回答