2012-02-25 10 views
32

Vì vậy, tôi đã quản lý để chạy Mã đầu tiên và hoạt động tốt.Mã di cư đầu tiên với chuỗi kết nối

Vì tôi vẫn đang phát triển ứng dụng, cấu trúc của Cơ sở dữ liệu chưa hoàn tất và vì vậy tôi cần triển khai di chuyển.

Tôi đã theo dõi Official Blog Post và nhận lệnh Update-Database đó hoạt động.

Tuy nhiên, điều này chỉ cập nhật phiên bản SQLExpress của cơ sở dữ liệu. Phiên bản sản xuất của cơ sở dữ liệu là trên Azure và tôi chỉ định chuỗi kết nối vào lúc chạy nên lệnh Update-Database không hoạt động trên đó.

Vì vậy, câu hỏi cuối cùng của tôi là: làm cách nào để áp dụng di chuyển tự động vào cơ sở dữ liệu sản xuất có chuỗi kết nối được chỉ định khi chạy?

+0

Đối với những người kiểm tra bằng NO app.config và không sử dụng bảng điều khiển PM, hãy xem bài đăng này http://stackoverflow.com/questions/15504465/entityframework-code-first-custom-connection-string-and-migrations/16133150# 16133150 –

Trả lời

49

Trên gói quản lý giao diện điều khiển loại:

Get-Help Update-Database

phần liên quan:

Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com 
monParameters>] 

Vì vậy, bạn có thể làm một Update-Database -ConnectionStringName "MyConnectionString" và nó sẽ làm việc như một nét duyên dáng.

Bạn cũng có bộ khởi tạo cơ sở dữ liệu MigrateDatabaseToLatestVersion, nếu bạn đặt (thông qua Dabase.SetInitializer()), khi bạn triển khai ứng dụng của mình khi sản xuất với chuỗi kết nối thích hợp, trên truy cập db tự động, nó sẽ tự động chuyển db của bạn sang phiên bản mới nhất.

Tôi khuyên bạn nên thận trọng, luôn sao lưu mọi thứ.

Cập nhật

@Alexy Strakh nhận xét gần đây đã sinh ra một lý lẽ khác có giá trị trong câu trả lời.

Định cấu hình đúng hệ thống triển khai bằng cách sử dụng Code First Migrations, được cung cấp 2 ConnectionString s.

  1. Xác định chuỗi kết nối của bạn trong web.config (prod và dev), với mật khẩu mặc định
  2. Có hệ thống cấu hình của ứng dụng của bạn biết về cấu hình sản và kết nối dev, tùy chọn xây dựng đơn vị xét nghiệm để đảm bảo đúng ai nhặt *
  3. dụng config file transformation và có nó chuyển đổi web.config của bạn thành một với giá trị sản xuất
  4. Triển khai gói của bạn để sản xuất (this should be the most cutting edge way)

Bạn không được phép tương tác với môi trường sản xuất từ ​​hộp phát triển của bạn, nhưng nếu bạn thực sự cần làm điều đó, sau đó biến nó thành giải pháp tạm thời cần được hoàn nguyên ngay khi bạn hoàn tất.

Một tùy chọn khác là chỉ cần sử dụng Web.Debug.config và Web.Release.config và có mẫu trung tâm cho web.config chính (đây sẽ là mẫu duy nhất bạn kiểm tra trong điều khiển nguồn).

Chỉ cần đảm bảo không bao giờ kiểm tra mật khẩu sản xuất hoặc phát triển cá nhân (nếu bất kỳ).

* Bạn có thể sử dụng biểu tượng DEBUG để kiểm tra cách ứng dụng đang chạy.

+0

Tôi có một cơ sở dữ liệu dev được chỉ định trong web.config mặc định của tôi và kết nối db prod được chỉ định tại web.release.config. Tôi muốn sử dụng sản phẩm thay vì dev, tôi có thể làm điều đó không? –

+0

Có, bằng mọi cách, nhưng hãy nhớ rằng nó KHÔNG phải là khuôn khổ thực thể (hoặc bất kỳ công nghệ lưu trữ) nào có trách nhiệm nhận thức được logic cấu hình của bạn cho dev/dàn dựng/sản xuất. Tôi nghĩ những gì bạn cần là chuyển đổi tập tin cấu hình. https://msdn.microsoft.com/en-us/library/dd465318%28v=vs.100%29.aspx – WDRust

+0

Tức là, giả sử bạn muốn đi xuống tuyến đường đó. Nếu bạn có thêm chi tiết hoặc yêu cầu, bạn nên đặt một câu hỏi khác (cảm thấy tự do để ping tôi) – WDRust

4

Why does Entity Framework's EF Migrations Add-Migration step require a database connection string?

Có một giải pháp mà tôi xem xét ít lao động chuyên sâu về lâu dài. Như nếu bạn tạo một chuỗi kết nối với cùng một tên

On ngữ cảnh của bạn : cơ sở ("dbname")

tên chuỗi kết nối và Danh mục ban đầu phù hợp với dbname bạn chỉ định và bạn không cần phải nhập tên chuỗi kết nối mỗi lần.