2

Event と呼ばれるこのオブジェクトがあり、イベントには他のリンクされたテーブルがいくつかあります。

[PetaPoco.ResultColumn]
public Models.User Presenter { get; set; }

Petapoco は、以下を使用するときにオブジェクトをフェッチすることで素晴らしい仕事をします。

evt = db.Fetch<Models.Event, Models.User>(";EXEC GetEventDetails @id", new { id = id });

これにより、プレゼンター データを含むイベントが表示されます。

しかし、問題は、クエリ「利用可能な席」で列が生成されていることです。この列は次のようにオブジェクトにリンクされています。

[PetaPoco.ResultColumn]
public string AvailableSeats { get; set; }

問題は、db.Fetch を使用すると、Available Seats が null になることです。私の解決策は次のとおりです。

evt = db.Fetch<Models.Event>(";EXEC GetEventDetails @id", new { id = id })[0];
evt.Presenter = db.FirstOrDefault<Models.User>("WHERE id=" + evt.PresenterId);

しかし、私はこれがあまり好きではありません。すべてを 1 行のコードにする必要があります。

これはペタポコのバグですか、それとも何か間違っていますか?

4

1 に答える 1

1

私の推測では (カバーの下を調べずに)、PetaPoco は、各テーブルと一致するウィッチ フィールドを推測する必要があるため、マルチ結合を行うときに対応するテーブル フィールドのみを入力します。

これらのタイプの結合に対する私の推奨事項は、ViewModel オブジェクトに必要なプロパティのみを含めることです。これはより明確で高速であり、あと数分しかかかりません。

于 2012-08-13T13:12:50.067 に答える