2009-09-10 29 views
58

Ho un'applicazione asp.net-mvc con il database di appartenenza predefinito. Sto accedendo da ADO.NET Entity Framework.parola chiave non supportata origine dati

Ora voglio spostarlo su IIS, ma sono emersi diversi problemi. Ho dovuto installare SQL Server Management Studio, creare un nuovo DB, importare tutti i dati dal precedente file .MDF. L'unica cosa che rimane da fare (per quanto ne so io) è quella di passare alla stringa di connessione. Tuttavia, non ne ho molta esperienza e continuo a ricevere la parola chiave non supportata: "origine dati". eccezione. Ecco la mia stringa di connessione:

<add name="ASPNETDBEntities" 
    connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
    providerName="System.Data.EntityClient" /> 

Qualche idea, cosa c'è che non va?

risposta

110

Quello che si ha è una stringa di connessione ADO.NET valida - ma è NON una stringa di connessione Entity Framework valida.

La stringa di connessione EF sarebbe simile a questa:

<connectionStrings> 
    <add name="NorthwindEntities" connectionString= 
    "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl; 
     provider=System.Data.SqlClient; 
     provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 

Stai perdendo tutti i metadata= e providerName= elementi nella stringa di connessione EF ...... che, fondamentalmente, solo avete ciò che è contenuto nella provider connection string parte.

L'utilizzo del progettista EDMX deve creare una stringa di connessione EF valida per te, nel tuo web.config o in app.config.

Marc

UPDATE: OK, ho capito quello che stai cercando di fare: è necessaria una seconda stringa di connessione "ADO.NET" solo per ASP.NET database utenti/appartenenza. La tua stringa è OK, ma il providerName è sbagliato - dovrebbe essere "System.Data.SqlClient" - questa connessione non usa ENtity Framework - non specificare "EntityClient" per questo allora!

<add name="ASPNETMembership" 
    connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
    providerName="System.Data.SqlClient" /> 

Se si specifica providerName=System.Data.EntityClient ==>Entity Framework stringa di connessione (con i metadati = e tutto).

Se avete bisogno e specificare providerName=System.Data.SqlClient ==>dritto ADO.NET stringa di connessione SQL Server senza tutte le aggiunte EF

+0

In effetti, ha funzionato, ma ho ottenuto l'eccezione Impossibile aprire il file fisico "C: \ OVSS \ Stavicky \ trunk \ Stavicky \ App_Data \ aspnetdb.mdf". Errore 5 del sistema operativo: "5 (impossibile recuperare il testo per questo errore Motivo: 15105)". Un tentativo di collegare un database con nome automatico per il file C: \ OVSS \ Stavicky \ trunk \ Stavicky \ App_Data \ aspnetdb.mdf non è riuscito.Esiste un database con lo stesso nome o il file specificato non può essere aperto oppure si trova sulla condivisione UNC. Da alcune fonti, ho pensato, questo è sbagliato .. Grazie comunque. – Trimack

+0

Non sono sicuro di aver compreso il secondo problema relativo alla stringa di connessione. Dovrei lasciarlo quello generato dal designer e aggiungere l'ASPNETMembership che mi hai scritto? – Trimack

+0

Se si dispone delle proprie entità nel progettista EDMX, è necessario accedere a tali elementi mediante un "EntityClient" e una stringa di connessione EF. Se si utilizza il sistema di appartenenza ASP.NET "out-of-the-box", è ** NON ** parte del modello EF, quindi quando si crea una stringa di connessione per il proprio database di appartenenze ASP.NET, non è possibile utilizzare " EntityClient "come provider - usa SqlClient. –

4

Questo problema può verificarsi quando si fa riferimento web.config (o app.config) collegamento archi di indice ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString; 

la stringa di connessione in base zero non è sempre quella nel file di configurazione come inherits others by default from further up the stack.

Gli approcci consigliati sono di accedere alla connessione per nome ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString; 

o per cancellare l'elemento connnectionStrings nel file di configurazione prima ...

<connectionStrings> 
    <clear/> 
    <add name="MyConnection" connectionString="... 
0

Ho avuto questo problema quando Ho iniziato a utilizzare Entity Framework, è successo quando non ho modificato la vecchia connessione del server SQL alla connessione EntityFrameWork.

Soluzione: nel file dove la connessione avviene attraverso il file web.config "add name =" Enti "connectionString = XYZ", assicurarsi che lei si riferisce alla connessione corretta, nel mio caso ho dovuto fare questo

 public static string MyEntityFrameworkConnection 
    { 
     get 
     { 
      return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; 
     } 

    } 

chiamare MyEntityFrameworkConnection ogniqualvolta è necessario stabilire una connessione.

private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection; 

nota: il collegamento in file web.config verrà generato automaticamente quando si aggiungono modello Entità alla soluzione.

2

Avevo lo stesso problema.
ma questo codice funziona bene provalo.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> 
0

So che questo è un vecchio post, ma ho ottenuto lo stesso errore di recente così per quello che vale, ecco un'altra soluzione:

Questo è di solito un errore di stringa di connessione, si prega di controllare il formato del vostro stringa di connessione, puoi cercare 'entity framework connectionstring' o seguire i suggerimenti sopra.

Tuttavia, nel mio caso, la mia stringa di connessione andava bene e l'errore è stato causato da qualcosa di completamente diverso quindi spero che questo aiuta qualcuno:

  1. Per prima cosa ho avuto un errore EDMX: c'era una nuova tabella di database in EDMX e la tabella non esisteva nel mio database (la cosa divertente è l'errore l'errore non era molto ovvio perché non era mostrato nella mia finestra EDMX o di output, invece era nascosto nello studio visivo nell ' Finestra Elenco errori 'sotto' 'Avvertenze'). Ho risolto questo errore aggiungendo la tabella mancante al mio database. Ma, mi è stato effettivamente impegnati a cercare di aggiungere una stored procedure e ancora ottenere l'errore 'origine dati' in modo da vedere di seguito come ho risolto è:

  2. Stored errore procedura: Stavo cercando di aggiungere una stored procedure e ogni volta che aggiunto tramite la finestra di progettazione EDMX ho ricevuto un errore 'datasource'. La soluzione consisteva nell'aggiungere la stored procedure come vuota (ho mantenuto il nome e la dichiarazione del proc memorizzato, ma ho eliminato il contenuto del proc memorizzato e l'ho sostituito con 'select 1' e ho ripreso ad aggiungerlo all'EDMX). Ha funzionato! Presumibilmente EF non ha gradito qualcosa all'interno del mio proc memorizzato. Una volta aggiunto il proc a EF, ho potuto aggiornare il contenuto del proc sul mio database per quello che volevo fosse e funziona, l'errore 'datasource' è stato risolto.

stranezza

0

mi è stato sempre lo stesso errore, poi aggiornato il mio stringa di connessione come di seguito,

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 

Prova questa che possa risolvere il problema.

Problemi correlati