我有一个新的ASP.NET Web应用程序我称之为“Smartifyer”,它开始时是空的。我在Nuget中添加了EntityFramework并创建了一个名为WordModel
的模型和以下上下文:
public class SmartifyerContext : DbContext
{
public SmartifyerContext()
: base("SmartifyerDatabase")
{
}
public DbSet<WordModel> Words { get; set; }
}
在根目录的Web.config
内,我有以下配置:
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="SmartifyerDatabase"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\SmartifyerDb.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
在上下文上运行测试时,Find
方法大约需要30秒才会超时,并出现以下错误:
System.Data.SqlClient.SqlException:与网络相关或 建立连接时发生特定于实例的错误 SQL Server。服务器未找到或无法访问。校验 实例名称正确且SQL Server配置为 允许远程连接。 (提供者:SQL网络接口,错误:26 - 找到指定的服务器/实例时出错
我对设置SQL连接以及Web.config
中的所有配置的理解都很差。我想.mdf数据库文件是自动生成的,如果它不存在但我不确定如何修改我的配置来做到这一点。
使用解决方案进行编辑:
我的所有连接配置和数据库内容都已正确设置。我的问题是我正在运行一个单元测试,它使用测试项目的app.config
文件,而不是主项目的web.config
。将我的web.config
复制并粘贴到测试项目中app.config
修复了问题!
答案 0 :(得分:2)
您获得的错误是因为EF无法找到数据库实例服务。 EF具有连接到称为LocalDB\V11.0
的开发人员数据库的默认连接字符串。在这里,您的应用程序正在尝试连接到ConnectionString中指定的LocalDB\V11.0
。
<add name="SmartifyerDatabase" connectionString="Data Source=(LocalDB)\v11.0; ......
您必须确保在您的计算机上安装了LocalDB实例。见answer。如果没有安装它并尝试手动连接到LocalDB实例,请尝试使用该应用程序。希望这能解决您的问题。
有关SQL LocalDB的信息,请参阅此MSDN article。
如果您的计算机上安装了SqlExpress
或其他Sql数据库,您也可以使用它。只需更改DataSource
中的connectionstring
属性,即可开始使用。