9

Trong VS2015 khi tôi mở hồ sơ xuất bản hiện có trong trình hướng dẫn xuất bản, nó ngay lập tức quyết định rằng cơ sở dữ liệu mặc định của tôi không còn là EF CodeFirst nữa và loại bỏ tùy chọn Thực thi Mã di chuyển đầu tiên và thay thế bằng Update Database.Làm cách nào để thuyết phục thuật sĩ Visual Studio Publish Web rằng cơ sở dữ liệu của tôi là Entity Framework CodeFirst?

Bằng cách nào đó, thuật sĩ dường như được quyết định rằng đây không còn là một dự án CodeFirst và thay thế nó bằng DbDacFx như vậy:

<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> 

Transforms tới:

<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> 

(Tôi đã thay thế các chuỗi kết nối khác nhau với *)

Bất kỳ ai đều có ý tưởng thuật sĩ sử dụng để quyết định rằng đây là một dự án CodeFirst?

Bài viết này http://blogs.msdn.com/b/webdev/archive/2014/04/09/ef-code-first-migrations-deployment-to-an-azure-cloud-service.aspx cung cấp một số chi tiết về cách cuộn phiên bản riêng của tùy chọn Thực thi mã di chuyển đầu tiên và là cách giải quyết tiềm năng, nhưng nó chỉ hoạt động.

+0

Tôi không thể trả lời chính xác câu hỏi của bạn, nhưng tôi nhận thấy rằng sự cố không sinh sản nếu tôi khởi động lại Visual Studio. – Paul

+0

Tôi đã khởi động lại VS2015 một vài lần và tôi vẫn gặp sự cố bạn đã đề cập ở đây. – JustMaier

+0

Tôi gặp vấn đề tương tự với Visual Studio 2017. – Zero3

Trả lời

0

Trong tệp .pubxml, bạn phải đổi tên ObjectGroup là tên đầy đủ của Dbcontext: m4d.Migrations.Configuration. Nếu không, nó có vẻ bị bỏ qua.

<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> 
Các vấn đề liên quan