使用PetaPoco / NPoco进行多次查询?

时间:2012-12-12 19:50:31

标签: petapoco npoco

说我有这两个表/域

[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会被填充,TableA ID会被填充但City为空。我必须为每个列指定绑定。是否只使用星形而不是指定每列?

1 个答案:

答案 0 :(得分:1)

你有什么应该工作,但我认为可能发生的是由于这些情况的发生:

  1. TableBId
  2. 上有一列TableA
  3. 您在课程TableBId
  4. 上没有TableA属性
  5. 当您手动运行查询时,城市将在TableBId部分TableA.*之后开始
  6. 映射的工作方式是按顺序遍历列,处理按以下方式进行:

    1. 如果您的通用参数列表中的第一个类中的列将被映射并移至下一列(仍然使用第一个类进行映射)
    2. 如果列不在第一个类上,那么它将考虑第一个类完成并移动到第二个类,依此类推....