强制MVC站点使用实时数据库

时间:2013-08-12 14:54:09

标签: c# asp.net-mvc ef-migrations

我使用代码优先的数据库方法已经在我的MVC应用程序上工作了一段时间。

现在,我已经设置了一个SQL Server 2008数据库,并希望将其用于生产用途。

但是,无论如何,它仍然使用本地制作的.sdf数据库。

我已尝试将web.config connectionStrings修改为

<connectionStrings>
   <add name="DefaultConnection" 
        providerName="System.Data.SqlServer" 
        connectionString="Server=-edit-;Database=-edit-;User Id=-edit-;Password=-edit-;" />
   <!--<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-SignalR-20130806111535;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-SignalR-20130806111535.mdf" />-->
</connectionStrings>

这根本不起作用,虽然看起来好像是

<system.data>
   <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
   </DbProviderFactories>
</system.data>

与它有关。

我已经尝试过检查教程,但每次停止都失败了。

2 个答案:

答案 0 :(得分:2)

您需要验证必须分配给Connection字符串的正确名称,它需要完整的类名,例如,如果您有这样的DbContext:

namespace ApplicationOrders.EF
{
 public class OrderContext : DbContext
   {
       public OrderContext(){}
 }
}

连接将是:

<connectionStrings>
    <add name="ApplicationOrders.EF.OrderContext"

或者您可以通过以下方式将连接字符串名称添加到DbContext:

public class OrderContext : DbContext
{
    public OrderContext()
        : base("DefaultConnection")
    {}
}

答案 1 :(得分:0)

请注意,提供者类名称应为

providerName="System.Data.SqlClient" 

不是

providerName="System.Data.SQlServer"