Domanda

Utilizzando SPMETAL ho generato un file C # mi permettendo l'uso di LINQ to accesso oggetti di SharePoint.

Tuttavia, utilizzando una semplice interrogazione produce uno strano errore:

  

Cast specificato non è valido.

     trace

Stack:
         a Set__zleceniaTrigger (Object, Object)          a Microsoft.SharePoint.Linq.StaticPropertyMap.SetToEntity (entità Object, Object value)          a Microsoft.SharePoint.Linq.SPItemMappingInfo.MaterializeEntity [TEntity] (DataContext dc, la lista SPDataList, voce SPListItem, SPItemMappingInfo itemMappingInfo, JoinPath joinPath)          a lambda_method (ExecutionScope, SPListItem)          a System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Collections.Generic.List1..ctor (fonte IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1)          a QuickModify.Program.Main (String [] args) in C: \ XXXXXXXXX \ QuickModify \ Program.cs: linea 42          a System.AppDomain._nExecuteAssembly (Assemblea assemblaggio, String [] args)          a Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()          a System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, ContextCallback callback, Object state)          a System.Threading.ThreadHelper.ThreadStart ()

La query stessa assomiglia a questo:

SPEntitiesDataContext ctx = new SPEntitiesDataContext("http://localhost:1080");  
var tasks = ctx.Zlecenia.ToList();

Certo, questo non è la query più ottimale, ma che usa .Dove per filtrare solo i record necessari anche restituisce lo stesso errore.

ho scoperto che posso selezionare le colonne specifiche utilizzando .Select(z => new ZlecenieItem(){ ColumnName = z.ColumnName, ... }), tuttavia non posso usare questo per selezionare le colonne di ricerca, come io ottengo il seguente errore allora (anche se seleziono solo una singola colonna in questo modo):

  

La query utilizza elementi non supportati, come riferimenti a più di una lista, o la proiezione di un'entità completa utilizzando EntityRef / EntitySet.

Questo è problematico perché a volte ho bisogno di ottenere i valori da altre liste, e sarebbe bello utilizzare i valori di ricerca.

Ho appena trovato il mio primo vero e proprio bug in un prodotto MS, o (ciò che si sente molto più probabile) sto facendo qualcosa di sbagliato?

È stato utile?

Soluzione

Mentre sono ancora incerto il motivo per cui quanto sopra non ha funzionato, sono riuscito a risolvere il problema con l'aggiunta di un file di configurazione personalizzata per SPmetal per generare il riferimento con.

Questo sembra indicare che la configurazione di default SPmetal potrebbe non funzionare sempre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top