0

これらの2つのテーブル/ドメインがあるとしましょう

[TableName("TableA")]
    [PrimaryKey("TableAId")]
    public class TableA
    {
        public int TableAId { get; set; }
        public string City { get; set; }

        public TableB TableB { get; set; }

        public TableA()
        {
            TableB = new TableB();
        }

    }

    [TableName("TableB")]
    [PrimaryKey("TableBId")]
    public class TableB
    {
        public int TableBId { get; set; }
        public string Name { get; set; }
    }


var sql = @" Select TableA.*, TableB.*
FROM         TableA INNER JOIN
                      TableB ON TableA.TableBId = TableB.TableBID";

// peta poco
var result = db.Query<TableA, TableB>(sql);

これを行うと、TableA.TableBgetsがいっぱいになり、TableAidがいっぱいになりますが、Citynullになります。バインドする各列を指定する必要があります。各列を指定する代わりに星だけを使用する方法はありますか?

4

1 に答える 1

1

あなたがそこに持っているものはうまくいくはずです、しかし私が起こっているかもしれないことはこれらの状態が起こっているためです:

  1. あなたは上のコラムを持っていTableBIdますTableA
  2. TableBIdクラスにプロパティがありませんTableA
  3. クエリを手動で実行すると、Cityが後TableBIdになりますTableA.*

マッピングは列を順番に実行することで機能し、処理は次のように機能します。

  1. ジェネリックパラメーターリストの最初のクラスの列がマッピングされ、次の列に移動します(引き続き最初のクラスをマッピングに使用します)
  2. 列が最初のクラスにない場合は、最初のクラスが終了したと見なされ、2番目のクラスに移動します。
于 2012-12-15T00:55:10.363 に答える