5

Tôi đã bật di chuyển cho ứng dụng khung thực thể của mình. Bây giờ, tôi muốn cập nhật cơ sở dữ liệu của mình trên máy chủ từ xa của mình. Tôi đã chạy lệnh này:Khuôn khổ đối tượng và di chuyển - cách cập nhật cơ sở dữ liệu của tôi trên máy chủ từ xa?

PM> Update-Database -Script 

Vì vậy, nó tạo tập lệnh sql. Tuy nhiên, tập lệnh này có tất cả siêu dữ liệu mà tôi thực sự có trong cơ sở dữ liệu của mình, chứ không phải các thay đổi đã được thực hiện; vì vậy, khi tôi cố gắng chạy kịch bản sql này trên máy chủ từ xa của tôi, nó nói rằng các bảng đã tồn tại.

Làm cách nào để tạo tập lệnh sql, chỉ chứa các bản cập nhật cần thiết?

Trả lời

7

Bạn có thể nhắm mục tiêu di chuyển cụ thể cho việc này. Nếu bạn có di chuyển được gọi là Foo, ví dụ:

Update-Database -TargetMigration Foo -Script 

Nó sẽ tạo tập lệnh di chuyển để di chuyển Foo. Thay thế Foo bằng bất kỳ di chuyển nào bạn cần chạy trên máy chủ đó.

Add-Migration InitialMigration 
Add-Migration AddCustomers 
Add-Migration AddProjects 

Giả sử bạn có ba di chuyển trên trong dự án và cơ sở dữ liệu cục bộ của bạn đã áp dụng tất cả, nhưng cơ sở dữ liệu từ xa chỉ có InitialMigration. Bạn có thể chạy như sau:

Update-Database -SourceMigration InitialMigration -TargetMigration AddProjects -Script 

Điều này sẽ áp dụng hai di chuyển trên máy chủ từ xa (AddCustomers and AddProjects).

+0

Tôi vừa cho phép di chuyển của mình, vì vậy tôi không có bất kỳ di chuyển mục tiêu nào, tôi có cần phải cập nhật db cục bộ của mình trước để có được điều đó không? – ojek

+0

Nếu bạn không có bất kỳ di chuyển thì chính xác bạn đang cố gắng áp dụng những gì? – Dismissile

+0

Chỉnh sửa của bạn đã rõ ràng. Cảm ơn bạn về thông tin! :) – ojek

1

Nếu bạn có quyền truy cập thông qua máy tính để bàn từ xa đến máy chủ, bạn có thể thực hiện công cụ di chuyển dòng lệnh thường được tìm thấy trong [projectFolder] /packages/EntityFramework.5.0.0/tools/migrate.exe

Và gọi nó là như thế này:

Migrate.exe [StartupProjectName] /StartupDirectory:"[BIN folder path]" /ConnectionStringName:"[Connection String Name]" /StartupConfigurationFile:"[Path to web or app.config]" 
1

bạn có thể sử dụng MigrateDatabaseToLatestVersion Initializer để tự động áp dụng bất kỳ di cư mới khi bạn triển khai một phiên bản mới của ứng dụng của bạn:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>()); 
Các vấn đề liên quan