Domanda

Attualmente sto imparando qualcosa in più su Linq-To-Entities, in particolare al momento sul caricamento desideroso e pigro.

proxy.User.Include("Role").First(u => u.UserId == userId)

Questo dovrebbe caricare l'utente, insieme a tutti i ruoli che l'utente ha. Ho un problema, ma ho anche una domanda. È solo un semplice modello creato per conoscere L2E

Avevo l'impressione che questo fosse progettato per rendere le cose fortemente tipizzate, quindi perché devo scrivere " Role " ;? Sembra che se cambiassi il nome della tabella, questo non creerebbe un errore di compilazione ...

Il mio errore è questo:

The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

La soluzione qui sotto mi permette di scrivere ora il codice:

proxy.User.Include(u => u.Role).First(u => u.UserId == userId)

Che è MOLTO più bello!

È stato utile?

Soluzione

  1. Includi è un suggerimento per il carico desideroso, non impone il caricamento desideroso.
  2. Controlla sempre la proprietà IsLoaded prima di fare riferimento a qualcosa che speri sia stato caricato con Includi.
  3. Esistono modi per inserire un oggetto fortemente tipizzato nell'istruzione include, ma non è disponibile una soluzione pronta per questo problema con Entity Framework. Google qualcosa come: Entity Framework ObjectQueryExtension Include
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top