EF6.0 Code First - 更改连接

时间:2014-10-19 16:32:34

标签: c# entity-framework ef-code-first azure-sql-database

在本地开发EF codefirst应用程序后, 我使用生成脚本从localdb复制了数据库,并在azure中创建了一个新的数据库。

我将连接字符串添加到配置文件中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <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="DefaultConnection"
          providerName="System.Data.SqlClient"
          connectionString="Server=tcp:XXXXXXX.database.windows.net,1433;Database=XXXXXX;User ID=XXXXXXXXXXX;Password=XXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"/>
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

当我尝试调用一个对象时,我得到了这个例外:

"Invalid object name 'dbo.Banner'."

数据库连接正确。我可以连接SQL Server Management Studio。 这段代码有什么问题? 手动创建DB会导致问题吗?

2 个答案:

答案 0 :(得分:1)

当您将数据库还原到另一台服务器并且更改了数据库用户名时,会发生此问题。

要解决此问题,最好的方法是将所有SCHEMA更改为dbo。

要通过MSSQL Enterpeise管理器更改SCHEMA执行以下代码

ALTER SCHEMA dbo TRANSFER oldSchema.TableName

答案 1 :(得分:-1)

似乎尚未创建表格 一些指示:

您是否启用了自动迁移?

AutomaticMigrationsEnabled = true;

您可能更喜欢手动更新/创建吗? 在这种情况下,请选择包含指向Azure DB的配置的项目以及Package Manager控制台中的项目:

  

更新的数据库

或者您也可以使用MigrateDatabaseToLatestVersion initializer class在代码中执行此操作。

以下是一些供参考的其他信息:
   - MSDN: Code First Migrations
   - ASP.NET: Code First Migrations and Deployment with the Entity Framework in an ASP.NET MVC Application