Ho 2 tabelle che hanno una relazione reciprocaCome faccio a fare ciò in Entity Framework (multiple where's o Join)?
La tabella A ha una relazione da 1 a molti con la tabella B, quindi crea una proprietà di navigazione in ciascuna.
Ora ho bisogno di controllare un valore dalla Tabella A (userName) e ho bisogno di controllare un valore dalla tabella B (ClubId).
Così nella mia mente sarebbe qualcosa di simile
Join the tables together
Where A.userName == "bob" &&
where B.clubId == "Car"
// return the count.
ma ora so con Entity roba dovrebbe rendere meno comune si unisce quindi mi chiedo se posso farlo con un join allora.
Ho provato questo
int count = Entity.TableA.where(a => a.userName == "bob" && a.TableB.where(i => i.ClubId == "Car")).Count();
quindi questo non funziona in quanto non restituirà il giusto tipo (il 2 ° dove). Questo è il modo in cui ho pensato in linea con il modo in cui mi sarei aspettato che avrebbe funzionato.
Quindi, come dovrebbe essere?
P.S
Io invece ho un esempio nel metodo query LINQ come ho fatto in precedenza.
Ah. Wow. Non sono sicuro di ciò che mi piace di più nel suo caso. Quella scelta mi butta via. Quindi cosa succede se ho bisogno di un altro filtro? dovrei aggiungere un altro selectMany? Bene, la prima sintassi del metodo funziona. Non so se scende internamente e fa la seconda cosa. Tutte le query richiederebbero lo stesso tempo di esecuzione. Cosa c'è nel secondo SelectMany one. come quello che è a => a.TableB, (a, b) =>) fare? – chobo2
Ho aggiornato il post con una correzione nella traduzione della query. Il primo SelectMany essenzialmente "appiattisce" la raccolta nidificata, restituendo una sequenza di tutte le B da tutte le A's. Il secondo SelectMany accetta due delegati, un "collectionSelector" per recuperare la raccolta di B da un A e un "resultSelector" per specificare il valore restituito dato un A e B.LINQ seleziona solo entrambi gli oggetti di input, da utilizzare nel resto della query. – dahlbyk