实体框架连接字符串“未找到服务器”

时间:2016-05-10 13:37:39

标签: c# .net entity-framework

我使用以下DbContext

设置了Code First
ent_rel1('sam', 'helsen', 4)
ent_rel1('sam', 'helsen', 3)

我还设置了连接字符串来查看(本地)数据库

public class MyDatabaseDbContext : DbContext
{
    public MyDatabaseDbContext(string nameOrConnectionString)
        : base(nameOrConnectionString)
    {
    }

    public MyDatabaseDbContext()
        : base("MyDatabase")
    {
    }

    public DbSet<MyTable> MyTables { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

还在Global.asax

中设置初始值设定项
<connectionStrings>
<add name="MyDatabase" 
     connectionString="Server=(local);Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true"
     providerName="System.Data.SqlClient"
     />
 </connectionStrings>

然后我运行应用程序并调用DbContext(在我的情况下来自控制器)

Database.SetInitializer<MyDatabaseDbContext>(new DropCreateDatabaseAlways<MyDatabaseDbContext>());

我收到以下错误消息

  

EntityFramework.dll中发生了'System.Data.SqlClient.SqlException'类型的异常但未在用户代码中处理

     

其他信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。无法获取本地应用程序数据路径。很可能未加载用户配置文件。如果在IIS下执行LocalDB,请确保启用了配置文件加载当前用户。

On Debugging并查看dbContext变量&gt;数据库&gt;连接&gt; ConnectionString属性我看到以下内容: “Data Source =(localdb)\ v12.0; AttachDbFilename = | DataDirectory | MyDatabase.mdf; Initial Catalog = MyDatabase; Integrated Security = True; MultipleActiveResultSets = True”

问题

为什么它指向(localDb)\ v12.0数据库而不是我的连接字符串? 即便如此,为什么不在那里创建数据库,因为这是在我的开发机器上?

我是否忘记了我需要设定的某种惯例。

1 个答案:

答案 0 :(得分:2)

您的连接字符串需要命名为MyDatabaseDb 要么 您的上下文类需要命名为MyDatabaseContext。

实体框架的约定是上下文类查找具有相同名称+上下文的连接字符串。你班级名字中的Db是无关紧要的。