2

私はこの答えを読みました。返されるデータ構造に一致するクラスを作成するように指示します。だから私はこのようなクラスを作りました

public class PersonJob
{
    public Person person { get; set; }

    public Job job { get; set; }
}

var data = db.Query<PersonJob>("SELECT * FROM Person, Job WHERE Person.JobID = Job.ID");

したがって、結果データには結果がありますが、プロパティpersonjobnullです。Person私のテキストブロックは、とJobクラスのプロパティにバインドされています。適切な提案をお願いします。

4

1 に答える 1

2

クエリは、1つのテーブルに複数の列を返します。Personテーブルに列、、、IDおよびNameJobIDあり、Jobsテーブルに列、、IDおよびがある場合Description、結果は次のようになります。

ID Name     JobID ID Description
-- -------- ----- -- -------------
 1 John Doe    10 10 Bottle Washer
 2 Jane Roe    10 10 Bottle Washer
 3 Xyroid      11 11 CEO

したがって、これらの5つのフィールドを使用して単一のクラスを作成する必要があります。

SELECTフィールドまたはフィールド名の重複を避け、後でテーブルが拡張されても機能するようにするには、ステートメントに必要なフィールドをリストする必要があります。

SELECT Person.ID AS PersonID, Person.Name, Job.ID AS JobID, Job.Description
FROM Person INNER JOIN Job ON Person.JobID = Job.ID

これには、次のようなクラスが必要です。

class PersonWithJob
{
    public int PersonID ...
    public string Name ...
    public int JobID ...
    public string Description ...
}
于 2012-10-09T06:43:39.637 に答える