2013-02-23 61 views
12

Sono in grado di fareLINQPad Linq include() metodo di estensione non viene trovato, anche dopo i riferimenti aggiungendo

var result = OAS_Questions.Count (oasq => oasq.Id!=0); 
result.Dump(); 

e anche

var result = OAS_Questions; 
result.Dump(); 

Ma quando provo ad includere oggetti figlio di "domande" dire "opitons" attraverso

var result = OAS_Questions.Include("OAS_QuestionOptions"); 
result.Dump(); 

mi viene mostrato l'errore sotto

'System.Data.Linq.Table' non contiene una definizione per 'Include' e nessun metodo di estensione 'Include' accettare un primo parametro di tipo 'System.Data.Linq.Table' potrebbe essere trovato (premere F4 per aggiungere una direttiva using o riferimento assembly)

Ho già provato ad aggiungere riferimenti ai riferimenti di assembly di seguito.

  1. System.Code
  2. System.Data
  3. System.Data.Entity
  4. System.Data.Linq
  5. System.Linq.Expressions
  6. System.Data.DataSetExtensions

Tuttavia, il metodo di estensione "Include()" non è disponibile durante la composizione della query e fornisce una sintassi ror.

risposta

3

Per impostazione predefinita, Linqpad utilizza Linq2Sql DataContext che non consente l'inclusione.

Per ottenere risultati includono metodo di estensione utilizzare un tipizzati DataContext dalla vostra assemblea del progetto (EF4.x/EF5)

+0

Vedi qui per una spiegazione di come aggiungere il riferimento al tipizzato DataContext: http://stackoverflow.com/ a/24456720/1943 –

6

È necessario utilizzare un tipizzato DataContext (ObjectContext o DbContext) dal DLL del progetto EntityFramework. È possibile farlo eseguendo le seguenti operazioni:

  1. Cliccare sulla Aggiungi connessione link nell'angolo in alto a sinistra dell'applicazione.
  2. Nella procedura guidata Choose Data Context, selezionare l'opzione Use a typed data context from your own assembly.
  3. Fare clic sull'opzione driver LINQPad appropriata per la soluzione (LINQ to SQL, EF 4.0 e inferiore o EF 4.1 e superiori), quindi fare clic su Avanti .
  4. Fare clic su Browse nell'angolo in alto a destra e navigare per selezionare il gruppo di progetto EF.
  5. Selezionare il modello dati entità, quindi fare clic su OK.
  6. Specificare il Server, Log on details e database, quindi fare clic su OK.

Ora dovresti essere in grado di utilizzare l'istruzione .Include in LinqPad.

22

Se stai usando EF tramite LINQPad quindi un metodo migliore è quello di utilizzare la versione fortemente tipizzato di .Include (http://msdn.microsoft.com/en-us/library/gg671236%28VS.103%29.aspx) come segue:

  1. aprire il LINQPad Query
  2. tasto destro del mouse -> interrogazione proprietà
  3. Add riferimento al EntityFramework.dll
  4. nella scheda import namespace in più aggiungere System.Data.Entity

allora avete intellisense e possibile utilizzare la versione fortemente tipizzato di .include, ad esempio:

var result = OAS_Questions.Include(q => q.OAS_QuestionOptions); 
+0

Per Entity Framework Core aggiungere riferimento all'assembly Microsoft.EntityFrameworkCore.dll e aggiungere ulteriore spazio dei nomi Microsoft.EntityFrameworkCore –

Problemi correlati