【问题标题】: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 文件 - 我几乎可以肯定您的数据在那里。
在我看来,真正的解决方案是
安装 SQL Server Express(反正你已经完成了)
安装 SQL Server Management Studio Express
在SSMS Express中创建你的数据库,给它一个逻辑名称(例如YourDatabase)
-
使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
其他一切都一模一样和以前一样......
【解决方案2】:
我经历过类似的事情,可能是一样的。当您使用Data Source=|DataDirectory|\mydatabase.mdf 时,您的数据库副本将保存在\bin\Debug\ 中。在调试模式下,您的数据将保存到此副本。
如果您提供数据库文件的完整路径,例如C:\xxxx\yyy\mydatabase.mdf 不可移植。希望这是你想要的?
【解决方案3】:
-
在 App.Config 文件中将路径更改为本地数据库路径
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Gerry\documents\visual studio 2013\Projects\DatabaseLocalApplication\DatabaseLocalApplication\Customers.mdf;Integrated安全=真”
这会将保存操作定向到正确的数据库。您可以通过单击您的数据库并复制 完整路径属性
中的条目来获取此字符串
然后将数据库的复制到输出目录设置为不复制