SQL Server 2008:确保已将IncludeMetadataConvention添加到DbModelBuilder约定中

Xai*_*oft 5 c# entity-framework ef-code-first asp.net-mvc-3

我得到的完整错误是这样的:

无法检查模型兼容性,因为数据库不包含模型元数据.确保已将IncludeMetadataConvention添加到DbModelBuilder约定中.

我曾经尝试使用SQL Server Compact,它工作正常,但托管服务提供商只支持专用服务器的CE,我在共享计划,所以我使用的是SQL Server 2008.我在db中的连接字符串如下格式:

  <connectionStrings>
    <add name="DBContext"
         connectionString="Data Source=1.1.1.1;Initial Catalog=dbname;User Id=user;Password=pass;"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

我还有一个在Application_Startup中运行的DatabaseInitializer.如果需要任何进一步的代码,请告诉我?我也没有创建edmx数据模型,我使用的是EF Code First.

我更改了初始化程序代码始终删除数据库,但现在我收到错误,数据库'master'中的CREATE DATABASE权限被拒绝.当我告诉初始目录使用时,我不知道为什么会得到这个.

我现在将null传递给SetInitializer,但现在我收到以下错误:

无法打开登录请求的数据库"dbname".登录失败.用户'user'登录失败.

我仍在使用上面的连接字符串.

Lad*_*nka 4

我更改了初始化程序代码“始终删除数据库”,但现在出现错误,数据库“master”中的 CREATE DATABASE 权限被拒绝。我不知道为什么当我告诉它要使用的初始目录时会得到这个。

您绝不能在共享主机中执行此操作,因为您几乎没有直接创建数据库的权限。数据库只能在托管提供商的特殊界面中创建。SQL Server 允许您删除您拥有的数据库,但是一旦您删除了它,您的权限就会消失,并且如果没有创建数据库的权限,您将无法重新创建它(在共享主机中,您永远没有此权限)。

我现在将 null 传递给 SetInitializer,但现在出现以下错误:

已经太晚了。您的数据库已被删除。您必须通过托管提供商界面创建它或联系您的托管提供商重新创建它。

我还有一个在 Application_Startup 中运行的 DatabaseInitializer。

您不能在共享主机中使用任何内置数据库初始值设定项,因为它们都希望创建数据库。您可以使用自定义初始值设定项将表填充到现有数据库。