Domanda

Ho un'applicazione asp.net-mvc con il database di appartenenza predefinito. Ci sto accedendo da ADO.NET Entity Framework.

Ora voglio spostarlo su IIS, ma sono emersi diversi problemi. Ho dovuto installare SQL Server Management Studio, creare un nuovo DB, importare lì tutti i dati dal precedente file .MDF. L'unica cosa che resta da fare (per quanto ne so) è cambiare la stringa di connessione. Tuttavia, non ho davvero esperienza con questo e continuo a ottenere 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?

È stato utile?

Soluzione

Quello che hai è 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>

Ti mancano tutti gli elementi metadata = e providerName = nella tua stringa di connessione EF ...... praticamente hai solo ciò che è contenuto nel stringa di connessione del provider parte.

L'uso del designer EDMX dovrebbe creare una stringa di connessione EF valida per te, nel tuo web.config o app.config.

Marc

AGGIORNAMENTO: OK, ho capito cosa stai cercando di fare: hai bisogno di un secondo " ADO.NET " stringa di connessione solo per il database utente / appartenenza ASP.NET. La tua stringa è OK, ma providerName è errato - dovrebbe essere " System.Data.SqlClient " - questa connessione non utilizza 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 il resto).

Se è necessario e specificare providerName = System.Data.SqlClient == > stringa ADO.NET diretta SQL Server senza tutte le aggiunte EF

Altri suggerimenti

Questo problema può verificarsi quando si fa riferimento alle stringhe di connessione web.config (o app.config) per indice ...

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

La stringa di connessione in base zero non è sempre quella nel file di configurazione in quanto eredita gli altri per impostazione predefinita da più in alto nello stack .

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

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

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

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

Stavo riscontrando 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" />

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

Soluzione: nel file in cui viene stabilita la connessione tramite il file web.config " aggiungi nome = " Entità " connectionString = XYZ " ;, assicurati di riferirti alla connessione corretta, nel mio caso ho dovuto farlo

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

    }

chiama MyEntityFrameworkConnection ogni volta che è necessario stabilire una connessione.

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

nota: la connessione nel file web.config verrà generata automaticamente quando si aggiunge il modello Entity alla soluzione.

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

In genere si tratta di un errore della stringa di connessione, controlla il formato della stringa di connessione, puoi cercare "stringhe di connessioni framework entità" o seguire i suggerimenti sopra.

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

  1. In primo luogo ho avuto un errore EDMX : c'era una nuova tabella del database in EDMX e la tabella non esisteva nel mio database (cosa divertente è l'errore l'errore non era molto evidente perché non è stato mostrato nel mio EDMX o nella finestra di output, invece è stato nascosto in Visual Studio nella finestra "Elenco errori" sotto "Avvertenze"). Ho risolto questo errore aggiungendo la tabella mancante al mio database. Ma, in realtà, ero impegnato nel tentativo di aggiungere una procedura memorizzata e ancora ottenendo l'errore "origine dati", quindi vedi di seguito come l'ho risolto:

  2. Errore procedura memorizzata : stavo provando ad aggiungere una procedura memorizzata e ogni volta che l'ho aggiunta tramite la finestra di progettazione EDMX ho ricevuto un errore "origine dati". La soluzione era quella di aggiungere la procedura memorizzata come vuota (ho mantenuto il nome e la dichiarazione del proc memorizzati ma ho eliminato il contenuto del proc memorizzato e l'ho sostituito con 'select 1' e riprovato aggiungendolo all'EDMX). Ha funzionato! Presumibilmente, a EF non piaceva qualcosa all'interno del mio proc memorizzato. Una volta aggiunto il proc a EF, sono stato quindi in grado di aggiornare i contenuti del proc sul mio database a quello che volevo che fosse e funziona, errore "origine dati" risolto.

stranezza

Stavo ottenendo lo stesso errore, quindi ho aggiornato la mia 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 questo risolverà il tuo problema.

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