am Laufen halten in "Wenn die Multi-Mapping-APIs, dass Sie den splitOn param einstellen, wenn Sie andere Tasten als Id haben" Fehler für den folgenden Code-Block:Dapper Multi-Mapping-Ausgabe
var accounts = DbConnection.Query<Account, Branch, Application, Account>(
"select Accounts.*, SplitAccount = '', Branches.*, SplitBranch = '', Applications.*" +
" from Accounts" +
" join Branches" +
" on Accounts.BranchId = Branches.BranchId" +
" join Applications" +
" on Accounts.ApplicationId = Applications.ApplicationId" +
" where Accounts.AccountId <> 0",
(account, branch, application) =>
{
account.Branch = branch;
account.Application = application;
return account;
}, splitOn : "SplitAccount, SplitBranch"
).AsQueryable();
I‘ m Verwenden von SplitAccount und SplitBranch für splitOn als Workaround.
Em Ich vermisse etwas?
Dank
Edit:
ich meinen Test auf ein wenig gereinigt haben, ist eine Light-Version von Klassen und eine neue Abfrage:
public class AccountLight
{
public int AccountId { get; set; }
public string AccountNumber { get; set; }
public BranchLight Branch { get; set; }
public ApplicationLight Application { get; set; }
}
public class BranchLight
{
public int BranchId { get; set; }
public string BranchNumber { get; set; }
}
public class ApplicationLight
{
public int ApplicationId { get; set; }
public string ApplicationCode { get; set; }
}
var accounts2 = DbConnection.Query<AccountLight, BranchLight, ApplicationLight, AccountLight>(
"select Accounts.AccountId, Accounts.AccountNumber," +
" Branches.BranchId, Branches.BranchNumber," +
" Applications.ApplicationId, Applications.ApplicationCode" +
" from Accounts" +
" inner join Branches" +
" on Accounts.BranchId = Branches.BranchId" +
" inner join Applications" +
" on Accounts.ApplicationId = Applications.ApplicationId" +
" where Accounts.AccountId <> 0",
(account, brach, application) =>
{
account.Branch = brach;
account.Application = application;
return account;
},
commandType: CommandType.Text,
splitOn: "AccountId, BranchId"
).AsQueryable();
Ihre Abhilfe ist in Ordnung ... was für Primärschlüssel haben Sie auf den Tischen haben ? –
Sam, danke für die Antwort. Im Folgenden sind die Schlüssel: Konto: AccountId als PK, BranchId und ApplicationId als FK Branch: BranchId als PK Anwendung: ApplicationId als PK –
Ein weiterer Hinweis: Es funktioniert, wenn ich die Anwendung entfernen. –