PetaPoco返回不正确ID
问题描述:
我有以下模型和方法:PetaPoco返回不正确ID
[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.*
然后一切正常。这是一个错误还是我错过了什么?
答
PetaPoco将通过您所有的返回列并映射它们。
首先它将映射来自表TESTSTEP的Id,然后再次找到Id,并覆盖之前设置的值。
如果你正在做一个联接这样,只需要特定的信息,您应该只指定的列要返回(否则你带回比需要的是一个性能问题的详细数据)
或按照您使用TS。*修复它的方式进行操作,以确保仅映射第一个表中的列。