continuare a correre in "Quando si usano le API multi-mapping assicurarsi di impostare il parametro splitOn se si dispone di chiavi diverse da Id" errore per il sottostante codice di blocco:Dapper Multi-mappatura Problema
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 usando SplitAccount e SplitBranch per splitOn come soluzione alternativa.
Em Mi manca qualcosa?
Grazie
Edit:
ho ripulito la mia prova un po ', qui di seguito è una versione leggera di classi e di una nuova query:
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();
vostra soluzione va bene ... quello che le chiavi primarie cosa avete sui tavoli ? –
Sam, grazie per la risposta. Di seguito sono riportate le chiavi: Account: AccountId come PK, BranchId e ApplicationId come FK Branch: BranchId come PK Applicazione: ApplicationId come PK –
Un'altra nota: Funziona se rimuovo l'applicazione. –