entity-framework - with - mvc c# entity framework



我如何說服Visual Studio發布Web嚮導,我的數據庫是實體框架CodeFirst? (1)

在VS2015中,當我在發布嚮導中打開一個現有的發布配置文件時,它立即決定我的默認數據庫不再是EF CodeFirst,並刪除執行代碼優先遷移的選項,並將其替換為更新數據庫。

不知何故,該嚮導似乎決定這不再是一個CodeFirst項目,並正在用DbDacFx取代它,如下所示:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

轉換為:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
      <Destination Path="Data Source=*" />
      <Object Type="DbDacFx">
        <PreSource Path="Data Source=*" includeData="False" />
        <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
      </Object>
      <UpdateFrom Type="Web.Config">
        <Source MatchValue="Data Source=*" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
      </UpdateFrom>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

(我用*替換了各種連接字符串)

任何人都知道嚮導用什麼來決定這是一個CodeFirst項目?

這篇文章http://blogs.msdn.com/b/webdev/archive/2014/04/09/ef-code-first-migrations-deployment-to-an-azure-cloud-service.aspx提供了一些如何滾動自己的版本的執行代碼第一次遷移選項,是一個潛在的解決方法,但它只是工作。


在您的.pubxml文件中,您必須將ObjectGroup重命名為您的Dbcontext的全名: m4d.Migrations.Configuration 。 否則,這似乎被忽略了。

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="m4d.Migrations.Configuration" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>




azure-web-sites