重新运行C#时数据未保存在本地数据库中

时间:2018-09-16 07:27:02

标签: c# linq-to-sql localdb

我已经使用基于服务的数据库选项创建了一个基本的Windows窗体应用程序,因此,当我将其部署到另一台PC上时,无需在其中安装sql server。Here is the image of my app

我在项目中添加了LINQ-to-SQL类,here是我的完整代码

这是app.config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
  <connectionStrings>
    <add name="_16Sep18_databaseAppWithSetup_.Properties.Settings.WrestlersConnectionString"
      connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Wrestlers.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

问题是,每当我运行程序时,以前存储的数据就不再存在于数据库中,而是当我输入数据并执行插入,删除,更新等操作时,它就起作用了,并且数据也显示在datagridview中,但是一旦我关闭应用程序,所有这些数据都将消失。 为什么会发生这种情况,我该如何解决?

3 个答案:

答案 0 :(得分:1)

MDF文件在每次运行时都会复制到调试文件夹,这是您的代码操作的文件,而不是源文件夹中的文件。

答案 1 :(得分:1)

发生此问题的原因是,当您尝试运行程序时,mdf文件也保存在DEBUG文件夹中... 只需转到app.config文件, 好像您已经添加了目录

Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ Data \ Database1.mdf; Integrated Security = True;用户实例= True

更改| DataDirectory |到完整的数据目录地址,如

“ AttachDbFileName = c:\ Project \ Data \ Database1.mdf”

它将起作用

答案 2 :(得分:0)

我通过更改“始终复制” =>“如果较新则复制”来解决此问题:

enter image description here

对我有用。希望对您有帮助。