Visual C#和SQL Server无法正常工作//文件已在使用中

rya*_*uno 5 c# sql sql-server-2008 entity-framework-4

在过去的几天里,我终于研究了如何使用Entity Framework将我的C#应用​​程序(我正在使用Visual Studio 2010 Express)连接到我的SQL Server 2008 R2数据库,我完全陷入困境.

当我想在VS中添加一个新的DataSource时,我只找到我的db文件的路径,当我最终找到它并尝试选择它时,它会抛出一个错误,显示

此文件已在使用中.输入新名称或关闭该文件,该文件由另一个应用程序使用

这听起来像是胡说八道,因为我两天没有使用我的数据库文件.所以经过一些谷歌搜索后我终于找到了解决方案,然后我进入了SQL Server配置管理器并重新启动了我唯一的SQL Server.

然后我的DataSource连接终于工作了,我在想,现在我是无与伦比的,我会把我的代码编写到日期结束,但几分钟后我又遇到了另一个问题:O(我在这里写的原因).

当我在我的VS应用程序中使用SQL Server的任何部分时,我的SQL Server停止工作.我无法浏览那里的数据库,我无法改变任何东西,我无法使用查询,只是什么都没有.它只是告诉我这个数据库已经在使用中.

当我以相反的方式做到这一点时也是如此.

我通过SQL Server配置管理器重新启动SQL Server(以便能够再次使用SQL Server),然后我使用我的数据库查询任务SELECT * FROM nameDatabase.

然后我尝试调试我的C#应用​​程序,其中我有一个组合框,SQL Server必须填写一些名称,我得到SQL Server无法访问的错误.(我现在无法告诉你确切的错误,但谷歌搜索后发现它意味着SQL Server无法访问).

如果有人想看到该代码,那么它是:

using (var entities = new PropertyDatabaseEntities())
{
    var userNames = entities.Login
                .Select(login => login.Username)
                .ToArray();

    comboboxLogin.Items.Clear();
    comboboxLogin.Items.AddRange(userNames);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在使用SQL Server中的任何内容之前重新启动SQL Server并启用此调试时,它可以工作.

有些人告诉我,我没有关闭我的连接,但这不可能是因为即使我先使用SQL Server,我仍然无法使用VS和SQL Server之间的连接.

我真的被卡住了.

*连接字符串

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Login.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Property.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

use*_*147 1

尝试在连接字符串中使用逻辑名称而不是文件名/路径。我认为“AttachDbFileName=”功能适用于 SQL Server EXPRESS 版本。但至少不建议在生产中使用它,而且这也不是建立连接的推荐方法。

而不是文件名和路径

Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot
Run Code Online (Sandbox Code Playgroud)

尝试逻辑名称

服务器=本地主机\SQLEXPR5;数据库=你的数据库; 用户 ID = sa;密码=;

看看www.connectionstrings.com