2016-06-01 9 views
0

ここでは、私に有効なクライアントを返すフォームがあり、localDatabaseとsaveChanges()に追加しようとしましたが、アプリケーションを閉じた後にデータはデータベースに残りません。Entity Frameworkはデータベースにデータを保持しません

FacturationAppContext db; 
public Form1() 
{ 
    InitializeComponent(); 
    db = new FacturationAppContext();  
} 

private void addNewClient(object sender, EventArgs e) 
{ 
    AddClient frmAdd = new AddClient(); 
    frmAdd.ShowDialog(); //form that returns a valid Client 

    if (frmAdd.newClient != null) 
    { 
      db.Clients.Add(frmAjouter.newClient);     
      db.SaveChanges(); 
    } 
} 

メソッドで直接クライアントを作成しても、データ(クライアント)はアプリケーションを閉じた後もデータベースに残りません。

編集:ここに私のコネクション文字列です:

<connectionStrings> 
<add name="FacturationAppContext" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\CycloneFacturation.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

おかげで、チャールズ

+1

を使用して、コンテキスト名前を覚えていないローカルデータベースのプロパティで "COPY ..."プロパティを "if new .."に変更します。 –

+0

コードはわかりました。追加しているのと同じデータベースにクライアントが存在していることを確認していますか?おそらく接続文字列をチェックして、確かめてください。私は 'FracturationAppContext'を' addNewClient'の中の 'using'ブロックに割り当てようとします。接続がぶら下がっていない方が良いです。後でパフォーマンスを最適化する必要がある場合は、リソース管理の影響を考慮する必要があります。 – Jim

+0

それはデータベースにデータを追加するように見えますが、アプリケーションがアクティブになるまでのみです。 私は接続文字列を追加しますが、私はかなり良いと確信しています – Charles

答えて

0

が行うようにしてください:

private void addNewClient(object sender, EventArgs e) 
     { 
      AddClient frmAdd = new AddClient(); 
      frmAdd.ShowDialog(); //form that returns a valid Client 
      using (db = new FacturationAppContext()) 
      { 
       if (frmAdd.newClient != null) 
       { 
        db.Clients.Add(frmAjouter.newClient); 
        db.SaveChanges(); 
       } 
      } 

     } 

i「は

+0

は終了しましたが、まだ保存されていませんアプリケーション。アプリがアクティブになっているときにのみデータを保存します – Charles

関連する問題