2017-07-30 23 views
0

アイテムをデータベースに追加しようとすると、アプリケーションを実行した後、データがデータベースに格納されません。私はなぜ、接続が良いと私はすでに何度もそれをチェックしたのか分からない。Entity Frameworkはデータベース内の変更を保存しません

private void InsertIncomeBtn_Click(object sender, RoutedEventArgs e) 
{ 
    float lf = (float)Convert.ToDouble(IncomeText.Text); 
    MessageBox.Show(lf.ToString()); 

    DateTime date = (DateTime)MovDatePick.SelectedDate; 
    Movments mv1 = new Movments(); 
    mv1.Sum = lf; 
    mv1.Date = date.Date; 

    db.TotalAll.FirstOrDefault().CurrentSum += lf; 
    db.Movments.Add(mv1); 
    db.SaveChanges(); 

    IncomeWin.Close(); 
    MainWindow m = new MainWindow(); 
    m.Show(); 
} 

私はVS 2017コミュニティを使用しており、WPFアプリケーションを作成しています。

ありがとうございました。

答えて

2

私はあなたがSQL Serverデータベースを持っていること(以前の質問のロットから)を仮定している、とあなたの接続文字列可能性が最も高いAttachDbFileName=.....エントリが含まれています - 正しいですか?

もしそうなら、AttachDbFileName =のアプローチには欠陥があります - せいぜい! Visual Studioでアプリケーションを実行すると、App_Dataディレクトリから出力ディレクトリ(通常はアプリを実行する.\bin\debug - )にコピーされます。INSERTは正常ですが、ただの間違った.mdfファイルを最後に見てください!

myConnection.Close()コールにブレークポイントを設定してから、.mdfファイルをSQL Server Mgmt Studio Expressで検査してみてください。データはほとんど確実です。私の意見では

真の解決策は、SQL Server Expressをインストールし

  1. になり

  2. SQL Server Management StudioのExpressをインストール

  3. (そして、あなたはすでにやったとにかくその)
  4. データベースをSSMS Expressに作成し、論理名を付けてください(例:YourDatabase

  5. 論理名データベース名(サーバー上に作成するときに指定)を使用して接続します。物理データベースファイルとユーザーインスタンスを混乱させないでください。その場合は、接続文字列のようなものになります:

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

    と他のすべてが前とまったく同じです...

はまた、より多くのためにアーロン・ベルトランの優れたブログ記事Bad habits to kick: using AttachDbFileNameを見ます背景情報

関連する問題