【问题标题】:Service Based Database .MDF基于服务的数据库.MDF
【发布时间】:2013-01-06 13:02:14
【问题描述】:

我需要存储由 C# 窗体应用程序生成的数据。我使用基于服务的数据库并创建了我需要的表,然后我使用 linq 在这些表中插入值。我实际上是通过使用它保存了我的数据,调试后我发现所有数据都被删除了。我找不到我在运行时给出的值。任何人都可以帮我解决它吗?我需要一个本地数据库来保存我的数据,我正在创建在我的客户端系统中不使用 SQL SERVER 的 win 表单应用程序。

【问题讨论】:

  • 您是否在每次运行应用程序时都覆盖数据库文件?

标签: c# database windows winforms


【解决方案1】:

整个 User Instance 和 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
    

    其他一切都一模一样和以前一样......

【讨论】:

    【解决方案2】:

    我经历过类似的事情,可能是一样的。当您使用Data Source=|DataDirectory|\mydatabase.mdf 时,您的数据库副本将保存在\bin\Debug\ 中。在调试模式下,您的数据将保存到此副本。

    如果您提供数据库文件的完整路径,例如C:\xxxx\yyy\mydatabase.mdf 不可移植。希望这是你想要的?

    【讨论】:

      【解决方案3】:
      1. 在 App.Config 文件中将路径更改为本地数据库路径

        connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Gerry\documents\visual studio 2013\Projects\DatabaseLocalApplication\DatabaseLocalApplication\Customers.mdf;Integrated安全=真”

      这会将保存操作定向到正确的数据库。您可以通过单击您的数据库并复制 完整路径属性

      中的条目来获取此字符串

      然后将数据库的复制到输出目录设置为不复制

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多