16

データベースからの行が 1 つある

select "John" Name, 
       "Male" Gender,
       20 Age,
       "Rex" PetName,
       "Male" PetGender,
       5 PetAge
       // ... many more ...

Dapper を使用して、この行を 2 つのオブジェクトにプルしたいと思います。

class Person
{
    public string Name { get; set; }
    public string Gender { get; set; }
    public int Age { get; set; }
    // ... many more ...
}    
class Pet
{
    public string PetName { get; set; }
    public string PetGender { get; set; }
    public int PetAge { get; set; }
    // ... many more ...
}

注: ここには階層関係はありません。1 つのデータベース行を 2 つ (またはそれ以上) のオブジェクトにマップしようとしているだけです。

ダッパーを使用してこれを行うにはどうすればよいですか?

  • ダイナミックを返し、各オブジェクトを手動でマッピングすることでこれを実行できることはわかっていますが、私のシナリオでは多数の列があるため、これは苦痛です。私はむしろこれをしたくない。(いいえ、より少ない列を必要とするように再設計することはできません。)

私が試したこと:

  • を調べましたがQueryMultiple<Person,Pet>、複数のクエリを実行していることを前提としています。私の実際のシナリオでは、これは非常にコストのかかるクエリであり、1 回だけ実行したいと考えています。
  • を返すことも検討しましQuery<Person,Pet,Tuple<Person,Pet>>たが、これには列が必要です。Idここには階層関係やIds はありません。単一の行を取り、それを複数の列にマップしたいだけです。
4

1 に答える 1