2011-08-24 121 views
0

我有以下模型和方法: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.*然後一切正常。這是一個錯誤還是我錯過了什麼?

回答

0

PetaPoco將通過您所有的返回列並映射它們。
首先它將映射來自表TESTSTEP的Id,然後再次找到Id,並覆蓋之前設置的值。

如果你正在做一個聯接這樣,只需要特定的信息,您應該只指定的列要返回(否則你帶回比需要的是一個性能問題的詳細數據)

或按照您使用TS。*修復它的方式進行操作,以確保僅映射第一個表中的列。