【问题标题】:Entity Framework won't save changes in database实体框架不会在数据库中保存更改
【发布时间】:2017-07-30 19:10:34
【问题描述】:

当我尝试将一个项目添加到数据库中时,运行应用程序后数据不会在数据库中长时间存储。不知道为什么,连接很好,我已经检查了很多次了。

 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 应用程序。

感谢您的帮助。

【问题讨论】:

    标签: c# wpf database entity-framework


    【解决方案1】:

    假设(根据之前的很多问题)您有一个 SQL Server 数据库,并且您的连接字符串很可能包含一个 AttachDbFileName=..... 条目 -对吗?

    如果是这样:整个 AttachDbFileName= 方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将复制 .mdf 文件(从您的 App_Data 目录到输出目录 - 通常是 .\bin\debug - 您的应用程序运行的位置)并且很可能 ,您的 INSERT 工作正常 - 但您最终只是查看了错误的 .mdf 文件

    如果您想坚持使用这种方法,请尝试在 myConnection.Close() 调用上设置断点 - 然后使用 SQL Server Mgmt Studio Express 检查 .mdf 文件 - 我几乎可以肯定您的数据在那里。

    在我看来,真正的解决方案

    1. 安装 SQL Server Express(反正你已经完成了)

    2. 安装 SQL Server Management Studio Express

    3. SSMS Express中创建你的数据库,给它一个逻辑名称(例如YourDatabase

    4. 使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

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

      其他一切都完全和以前一样......

    有关更多背景信息,另请参阅 Aaron Bertrand 的优秀博文 Bad habits to kick: using AttachDbFileName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多