PetaPoco返回错误的ID

时间:2011-08-24 16:06:52

标签: petapoco

我有以下模型和方法:

[PetaPoco.TableName("TestStep")]
[PetaPoco.PrimaryKey("ID")]
public class TestStep
{
    public int ID { get; set; }

    public int ParentID { get; set; }

    public string Name { get; set; }

    public string Details { get; set; }
}

 public IEnumerable<TestStep> GetById(int ID)
        {
            var db = new PetaPoco.Database("TestProcedureDB");

            return db.Query<TestStep>(@"SELECT * FROM TESTSTEP TS 
                                       INNER JOIN TESTSTEPLINK L ON L.STEPID = TS.ID
                                       WHERE L.TESTID = @0", ID);

        }

填充POCO时,ID属性值是TESTSTEPLINK表中ID列的值。如果我将查询更改为返回SELECT TS.*,那么一切正常。这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

PetaPoco将浏览您的所有返回列并映射它们 首先,它将从表TESTSTEP映射Id,然后它再次找到Id,因此它会覆盖先前设置的值。

如果您正在进行这样的连接并且只想要特定信息,那么您应该只指定要返回的列(否则您将带回的数据超出需要的数据,这是性能问题)

或者像使用TS。*一样修复它,以确保只映射第一个表中的列。