2015-07-21 29 views
6

Tôi có thể đổi tên vùng tên của toàn bộ dự án của mình (bao gồm tất nhiên: lớp DbContext, lớp cấu hình di chuyển, vv) mà không vi phạm bất cứ điều gì hoặc phải tạo lại tất cả các lần di chuyển của tôi?EF6: Đổi tên không gian tên bằng cách sử dụng Code First Migrations

Nói, tôi có dự án MyProject, mà không gian tên là

Foo.MyProject 

Và lớp cấu hình của tôi là trong

Foo.MyProject.Migrations 

Nói rằng tôi muốn đổi tên Foo namespace cho Bar, và tất nhiên không gian tên cấu hình của tôi bây giờ sẽ là

Bar.MyProject.Configurations 

Có cách nào đúng để thực hiện việc này và duy trì tất cả các Chuyển đổi hiện tại của tôi vẫn hoạt động không? Những cách này có liên quan đến việc chỉnh sửa thủ công bảng ___MigrationHistory hoặc thứ gì đó không? (trong nháy mắt, tôi thấy cột ContextKey, mà tôi nghi ngờ mình nên chỉnh sửa theo cách thủ công.)

Trả lời

10

Có, bạn thực sự cần cập nhật ContextKey trong bảng__MigrationHistory. Mã số:

UPDATE [dbo].[__MigrationHistory] 
    SET [ContextKey] = 'New_Namespace.Migrations.Configuration' 
WHERE [ContextKey] = 'Old_Namespace.Migrations.Configuration' 

Một đọc tốt về chủ đề của không gian tên đổi tên với EF6:

http://jameschambers.com/2014/02/changing-the-namespace-with-entity-framework-6-0-code-first-databases/

+0

Whoa. Chính xác những gì tôi cần! Cảm ơn. –

Các vấn đề liên quan