Domanda

I have the following model and methods:

[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);

        }

When the POCO is populated, the ID property value is that of the ID column in the TESTSTEPLINK table. If I change the query to return SELECT TS.* then all is ok. Is this a bug or am I missing something?

È stato utile?

Soluzione

PetaPoco will go through all your return columns and map them.
First it will map Id from the table TESTSTEP, then it finds Id again and so it overrides the previously set value.

If you are doing a join like this and only want specific information, you should either only specify the columns you want to return (otherwise you are bringing back more data than needed which is a performance issue)

or do as you did to fix it by using TS.* to ensure only the columns from the first table are mapped.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top