2016-05-17 4 views
0

ローカルデータベース(.mdf)とエンティティフレームワークを使用してwinformアプリケーションを作成したいとします。エンティティフレームワークを使用したSaveChangesの後にローカルデータベースが更新されない

データベースとモデルが作成されました。私はこのコードを実行すると:

using (var context = new testEntity()) 
{ 
    CLIENTS c = new CLIENTS(); 
    c.Name = "name"; 
    c.Age = 10; 
    context.CLIENTS.Add(c); 
    context.SaveChanges(); 
} 

をクライアントがデータベースに作成されており、私はこのコードでそれを取得することができます。

using (var context = new testEntity()) 
{ 
    List<CLIENTS> clients = context.CLIENTS.ToList(); 
    //break point here 
} 

しかし、追加クライアントが閉じた後、.mdfファイルのファイル上にありませんプログラム。 .mdfファイルにいくつかの行を追加すると、その行は表示できますが、反対の行は表示できません。

誰かが私を助けることができる場合は、

+0

コンテキストコンストラクタはどのように見えますか?データベース初期化子とは何ですか?他のものはオーバーライドされています(SaveChanges、modelbuilder、configuration)? – DevilSuichiro

答えて

6

ありがとうは、DBのCopy to Output Directoryを確認してください。
データベースファイルのCopy to Output DirectoryプロパティをCopy if newer.に変更します。

+0

私のプログラムを何回か実行すると、最後に追加されたクライアントを取得できますが、mdfファイルは空です。 そして、プログラムを再構築すると、データベースはクリアされます... –

1

.mdfコードを再構築するたびにファイルが失われます。 解決方法:フォルダーの場所を構築するのではなく、.mdfファイルを別の場所に保存してください。 CまたはDドライブでは、接続文字列をそれぞれ変更します。また、Pranav'sの回答を参照することもできます。

+0

私のmdfファイルはプロジェクトの場所にあります –

0

設定ファイル(App.config)で接続文字列を確認してください データベースから.edmxを生成すると、データベースのコピーがデバッグフォルダに作成されます(デバッグ時に実行する場合)。尋ねられたら「はい」をクリックしました。つまり、再構築するたびに、データベースのコピーの内容がクリアされます。

最初のdabataseを指すように接続文字列を変更する必要があります。

関連する問題