在启动时,Code-first EF数据库未自动生成

28 浏览
0 Comments

在启动时,Code-first EF数据库未自动生成

我有一个新的ASP.NET网络应用程序,我称之为“Smartifyer”,一开始是空的。我使用Nuget添加了EntityFramework,并创建了一个名为WordModel的模型和以下上下文:

public class SmartifyerContext : DbContext
{
    public SmartifyerContext()
        : base("SmartifyerDatabase")
    {
    }
    public DbSet Words { get; set; }
}

在根目录的Web.config中,我有以下配置:


  
    
    

当对上下文进行测试时,Find方法大约需要30秒,然后超时,并显示以下错误:

System.Data.SqlClient.SqlException:在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。请验证实例名称是否正确,并验证SQL Server是否配置为允许远程连接。(提供程序:SQL Network Interfaces,错误:26 - 无法定位服务器/指定的实例)

我对设置SQL连接和Web.config中的所有配置的理解很差。我希望如果不存在,则自动生成.mdf数据库文件,但我不知道如何修改我的配置来实现这一点。

解决方案编辑:

我的连接配置和数据库设置都是正确的。我的问题是我正在运行一个使用测试项目的app.config文件的单元测试,而不是主项目的web.config。将我的web.config复制粘贴到测试项目的app.config中解决了这个问题!

0
0 Comments

问题原因:EF无法定位数据库实例服务。

解决方法:确保在计算机上安装了LocalDB实例。如果没有安装,请安装并尝试手动连接到LocalDB实例,然后再尝试使用应用程序连接。另外,如果计算机上已安装了SqlExpress或其他Sql数据库,也可以使用它们。只需更改连接字符串中的DataSource属性即可。

作者发现问题所在:连接设置都正确,问题在于运行了一个单元测试,该测试使用了测试项目的app.config文件,而不是主项目的web.config文件。将web.config复制粘贴到测试项目的app.config中解决了问题。

0