Code-First更改没有连接字符串的数据源

时间:2013-10-11 09:44:56

标签: c# entity-framework ef-code-first

我似乎在创建MVC4应用程序时遇到问题,我采用了代码优先的方法来创建模型,但似乎没有在web.config文件中创建连接字符串。

构建的数据库似乎是基于(localhost)\ SQLEXPRESS实例构建的,但我想将其更改为外部数据源。没有要更新的连接字符串,我不知道该怎么做。

请有人指出我正确的方向吗?

编辑:我发现下面的图表突出了答案说得很好

EF DB Initialization Flowchart http://www.entityframeworktutorial.net/images/codefirst/database-init-fg1.PNG

3 个答案:

答案 0 :(得分:2)

您必须自己添加连接字符串

<add name="SomeDb" connectionString="Data Source=SERVENAME;Initial Catalog=DBNAME;User Id=loginid;Password=password" providerName="System.Data.SqlClient" />

此字符串的名称应与上下文类的名称匹配。

public class SomeDb: DbContext
{
    public SomeDb()
        : base("name=SomeDb")
    { 
    }
}

这应该这样做。

答案 1 :(得分:1)

您必须创建一个与DbContext类同名的连接字符串:

<connectionStrings>
    <add name="NameOfDbContext" connectionString="Data Source=ServerName\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

您还可以使用DbContext类的重载来自己指定连接字符串:

public class MyDbContext() : base("ProductionDbContext")
{
}

现在您可以使用ProductionDbContext作为连接字符串。

有关详细信息,请参阅this article on MSDN

答案 2 :(得分:1)

如果您使用ADO.NET Entity Framework(.edmx),它将使用连接字符串更新您的web.config文件。但在代码优先,您需要在web.config中编写连接字符串,如

假设你的dbcontext看起来像,

public class SampleDbContext:DbContext
{
public SampleDbContext():base("SampleDbContext")
{

}
...
...
}

应该在web.config中使用SampleDbContext名称创建连接字符串,例如

    

希望这有帮助