2012-06-16 11 views
6

Ho una prima app Web in codice EF che funziona correttamente e si connette correttamente al server del database. Ho aggiunto un'app console alla soluzione per testare la logica di un servizio che andrà insieme all'app.App Entity Framework Console che si collega al database errato

Avevo uno scratcher della testa sul motivo per cui l'app della console non stava salvando i dati, quindi l'ho ridotto a un semplice recupero dal database e si è scoperto che l'app della console originale stava salvando il record, ma in un altro database rispetto a quanto specificato nella stringa di connessione.

Ecco la stringa di connessione dal app.config:

<add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" /> 
    <add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" /> 

Il DatabaseContext è

La console app è molto semplice

Database.SetInitializer<DatabaseContext>(null); 
    static void Main(string[] args) 
    { 
     using (DatabaseContext db = new DatabaseContext()) 
     { 
      var query = from u in db.Users where u.Id == 1 select u; 
      foreach (User u in query) 
      { 
       Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName); 
      } 
      Console.ReadLine(); 
     } 
    } 

ma invece di connessione al db su il server remoto che si sta collegando a sqlexpress sulla macchina di sviluppo e che colpisce questo database.

UniversityGateway.Data.DatabaseContext 

Ho provato a cambiare la stringa di connessione per puntare il | DataDirectory | alla stringa di connessione SQL e questo non ha fatto alcuna differenza. Le stringhe di connessione sono le stesse di quelle presenti nel web.config e, come ho detto, l'app Web funziona correttamente.

Qualche idea su cosa mi manca o mi indirizza nella giusta direzione per risolvere questo?

+0

solo controllando ... non hai file di risorse vaganti in giro per te? –

+1

perché in tutto il mondo qualcuno potrebbe votare questo e non preoccuparsi di lasciare un commento. – Brian

+1

Come si presenta il costruttore del contesto? –

risposta

0

OK dopo un sacco di scavo ho trovato una soluzione. Non sono sicuro se è il migliore/migliore, ma funziona così posso andare avanti.

Dal momento che la console app non è stato rispettando la stringa di connessione nel app.config, ho specificato il collegamento nel codice con

db.Database.Connection.ConnectionString 

sento ancora come mi manca qualcosa qui però.

Scoperto che una parte aggiuntiva del mio problema è che EF Codefirst non funziona bene con i tipi di dati DateTime di Sql Server 2005.

+1

C'è una buona probabilità che il problema sia legato al costruttore della tua classe DbContext, quindi segui il commento di @Ladislav e incollalo nella tua domanda. – kingdango

+0

in effetti è perché i tipi di dati datetime di ef non si sincronizzano con il datatype sql 2005 datetime. Se avessimo generato un file emdx da un database esistente, avremmo potuto aggiungere l'impostazione token providermanifest per consentirgli di giocare con il 2005, ma usare prima il codice non era un'opzione. Risolvendolo nella riscrittura. – Brian

Problemi correlati