2010-05-12 19 views
5

Ho una web part molto semplice. Ho una vista a griglia singola, che sto popolando usando linq per le entità (o almeno questo è quello che voglio fare). Il file .edmx di Entity Data Model si trova nello stesso progetto della web part e tutto sembra funzionante. Quando metto a punto il progetto, si fa saltare in aria sul costruttore modello di entità con il messaggio di errore:Utilizzo di Entity Framework come origine dati di una web part in SharePoint 2010

La connessione denominata specificata è o non trovato nella configurazione, non destinati ad essere utilizzati con il provider EntityClient, o non valido.

mia stringa di connessione nel app.config è la seguente:

<add name="MyDBEntities" connectionString="metadata=res://*/MyDBEntityModel.csdl|res://*/MyDBEntityModel.ssdl|res://*/MyDBEntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

Il costruttore:

public MyDBEntities() : base("name=MyDBEntities", "MyDBEntities") 

Quindi, da quello che ho letto altrove, il mio problema è che SharePoint non riesco a vedere la mia stringa di connessione. Il che significa che App.Config dal mio progetto non viene effettivamente caricato in SharePoint quando eseguo/eseguo il debug del progetto. In questo caso, come faccio a impostare il mio progetto in Visual Studio 2010 per garantire che SharePoint prelevi App.Config in aggiunta al file di configurazione principale di SharePoint. Se devo copiare manualmente la stringa di connessione, esiste una procedura "best practice" per farlo? Le web part di SharePoint combinate con Entity Framework non sono pronte per l'ora di pubblicazione?

risposta

6

Gli strumenti SharePoint per Visual Studio 2010 sono stati implementati e rendono automaticamente molte delle voci necessarie in web.config. Sfortunatamente, non creeranno le voci Entity Framework per te. Per fare ciò, dovrai scrivere un ricevitore di funzionalità per il tuo progetto web part che aggiunge la stringa di connessione EF.

L'API di SharePoint ha un oggetto denominato SPWebConfigModification. Dovresti scrivere un evento FeatureActivated che utilizza questa classe per apportare la tua modifica a web.config e quindi un evento FeatureDeactivating che rimuove la modifica.

-Greg

+0

:) Grazie mille, mi hai salvato dallo spostamento di materiale da EF – anpatel

1

mi è stato alle prese con un la stessa eccezione in una SharePoint 2010 WebPart, e ho finalmente capito di lavoro, ma qui ci sono due cose importanti che ho imparato lungo la strada.

  1. È necessario utilizzare una soluzione farm anziché una soluzione sandbox. Il motivo è che le soluzioni sandbox non hanno accesso ai dati al di fuori della raccolta siti. Un'eccezione più significativa sarebbe stata utile per risolverlo rapidamente, ma stavo ricevendo l'eccezione come sopra.

  2. La stringa di connessione deve essere nel web.config dell'applicazione Web su cui si installa la propria WebPart. Non viene aggiunto automaticamente quando si installa la propria WebPart, quindi è necessario aggiornare il web.config come descritto in Greg, oppure modificarlo manualmente. Si trova in C: \ inetpub \ wwwroot \ wss \ VirtualDirectories {WebApplicationName} \ web.config

Problemi correlati