在本地开发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会导致问题吗?
答案 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