ストアドプロシージャを使用したマルチマッピングによるDapper

asp.net-mvc-3 c# dapper stored-procedures

質問

これは、ASP.NET MVC3のDapperに関するものです。

私は2つのテーブルtblBranchMaster 、私のデータベースにはtblZoneMasterと同じ詳細を持つ2つのクラスファイルがあります。

tblBranchMaster(ID, ZoneID, Name);
tblZoneMaster(ID, Name);    

どちらの表にも主キーの外部キー関係があります。

私は次のクエリを持つストアドプロシージャを持っています:

Select * from tblBranchMaster;

いくつかの他の論理的なものと一緒に。

さて、どのように関連する支店のリストを使って、ゾーンの結果を得るべきですか?

私は次のコードベースを持っています:

List<tblBranchMaster> lstResult = Query<tblBranchMaster, tblZoneMaster,  tblBranchMaster>
  (tblBranchMaster.uspGetBranchListPagination, (objBranch, objZone) => 
  { objBranch.ZoneMaster = objZone; return objBranch; }, 
   param, splitOn:"Id").ToList();

このコードは私に次のエラーを与えます:

マルチマッピングAPIを使用する場合は、Id以外のキーがある場合は必ずsplitOnパラメータを設定してください
パラメータ名:splitOn

私は何が欠けているのですか?

人気のある回答

照会結果には、取り込むオブジェクトと同じ形式と順序が必要です。この場合、dapperはあなたが "Id、Name、Id、Name"を持つことを期待しています。最初の2つはブランチマスタのIdとName、3番目と4番目のカラムはゾーンマスタのIdとNameです。

与えられたクラスは次のとおりです。

class Branch 
{
    int Id { get; set }
    string Name { get; set }
}

class Zone 
{
    int Id { get; set }
    string Name { get; set }
}

そして、ストアドプロシージャの次のSQLクエリフォーマット:

SELECT b.Id, b.Name, z.Id, z.Name
FROM Branch b LEFT JOIN Zone z ON b.ZoneId = z.Id 

あなたはこの大まかなコードを使用することができるはずです:

var result = connection.Query<Branch, Zone, Branch> ("myStoredProcName", 
    (objBranch, objZone) => { objBranch.ZoneMaster = objZone; return objBranch; }, 
    param, commandType: CommandType.StoredProcedure).ToList();


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ