2012-07-18 14 views
5

Utilizzo di Entity Framework 4.1 con un database SQL Server Express .mdf.Entity Framework 4.1 non aggiunge alcuna riga al database di SQL Server Express

Per scopi di test, sto tentando di eseguire operazioni CRUD su database SQL Server Express utilizzando Entity Model in un'applicazione WPF.

Sono nuovo di questo concetto, e ho seguito il video tutorial e fatto di codifica secondo che

ho creato il modello Entità singola tabella molto semplice. E ho scritto semplice codice nel file di cs per eseguire l'aggiunta di una riga al database utilizzando il codice seguente

testEntities db = new testEntities(); 
TestTable tb = new TestTable(); 
tb.Name = txtName.Text; 
tb.Email = txtMail.Text; 
db.TestTables.AddObject(tb); 
db.SaveChanges(); 

Ma se torno controllare il database viene aggiunto alcun dato. Per favore dimmi cosa sta andando storto qui ??

E qui è la mia connessione String

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="testEntities" 
     connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\test.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+0

@marc_s Ho aggiornato domanda e aggiunto stringa di connessione. . dove sto andando storto – panindra

+0

Qualche messaggio di errore? Hai provato a eseguire il debug dell'app passo dopo passo per vedere cosa sta succedendo? Debugger è il tuo migliore amico, impara a usarlo. Il codice che hai mostrato sembra ok, scommetto che c'è un problema da qualche altra parte (come se ti fossi dimenticato di collegare anche gestori e cose simili). – walther

+0

@walthereven non sto ottenendo alcun errore. ho provato a provare che è ok – panindra

risposta

6

L'intero alle istanze utente e AttachDBFilename = approccio è viziata - nel migliore dei casi! Visual Studio verrà copiando il file intorno .mdf (dal DataDirectory nella directory di output della vostra applicazione in esecuzione) e molto probabilmente, i tuoi INSERT funziona bene - ma si sta solo guardando il file sbagliato .mdf alla fine !

Se si vuole attaccare con questo approccio, quindi provare a mettere un punto di interruzione sulla chiamata .SaveChanges() - e quindi ispezionare il file .mdf nella directory del applicazione in esecuzione con SQL Server Mgmt Studio Express - Sono quasi certo i vostri dati sono lì .

La vera soluzione a mio parere sarebbe quello di

  1. installare SQL Server Express (e che hai già fatto, che in ogni caso)

  2. installare SQL Server Management Studio Express

  3. crea il tuo database in SSMS Express, assegna un nome logico (ad es. TestDatabase)

  4. connettersi ad esso utilizzando il suo logico nome del database (dato quando si crea sul server) - e non si scherza con i file di database fisici e le istanze degli utenti. In tal caso, la stringa di connessione sarebbe qualcosa di simile:

    Data Source=.\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True 
    

    e tutto il resto è esattamente lo stesso di prima ...

+0

per il tuo suggerimento. Proverò ancora una volta il modulo scratch – panindra

+1

Sono d'accordo con questa analisi. Odio allegare mdf in SSE, può causare un sacco di problemi strani. Creerei il SSE DB in SSMS, proprio come faresti in pieno Sql Server, e uso la stringa di connessione per quel formato, non usando affatto .mdf. Questo dovrebbe darti meno mal di testa. – GrayFox374

Problemi correlati