Tôi đang làm việc với Entity Framework 5.0 Code First Migrations và đang gặp sự cố khi chạy Update-Database. Nó nói rằng có những thay đổi mô hình đang chờ xử lý; nhưng nó phải là up-to-date, vì vậy tôi chạyCập nhật-Cơ sở dữ liệu không thành công do Thay đổi đang chờ xử lý, nhưng việc thêm di chuyển tạo ra một di chuyển trùng lặp
Add-Migration SomeMigrationName
và nó tạo ra một tập tin ... Tuy nhiên, nó tạo ra một tập tin trong đó chủ yếu là giống một bản sao của một Migration trước đó (nếu tôi cố gắng Cập nhật cơ sở dữ liệu một lần nữa trên tập tin đó, nó không thành công với các vấn đề liên quan đến cố gắng để thả một ràng buộc không tồn tại). Hơn nữa, tôi đã có thể xác nhận rằng di chuyển 'ban đầu' đã được chạy dựa trên cả hai mô hình dữ liệu trong DB, và từ sự hiện diện của một bản ghi trong bảng __MigrationHistory!
Nếu tôi xóa toàn bộ cơ sở dữ liệu và chạy tất cả các lần di chuyển một lần nữa, tự động hoặc bằng tay, tôi có cùng một vấn đề.
Các tập tin di cư 'gốc' Tôi đã thực hiện như sau:
public partial class RenameLinkColumns : DbMigration
{
public override void Up()
{
DropForeignKey("dbo.Listing", "OfferedByUserId", "dbo.User");
DropIndex("dbo.Listing", new[] { "OfferedByUserId" });
AddColumn("dbo.Listing", "ListedByUserId", c => c.Int(nullable: false));
AddForeignKey("dbo.Listing", "ListedByUserId", "dbo.User", "UserId", cascadeDelete: true);
CreateIndex("dbo.Listing", "ListedByUserId");
DropColumn("dbo.Listing", "OfferedByUserId");
}
public override void Down()
{
AddColumn("dbo.Listing", "OfferedByUserId", c => c.Int(nullable: false));
DropIndex("dbo.Listing", new[] { "ListedByUserId" });
DropForeignKey("dbo.Listing", "ListedByUserId", "dbo.User");
DropColumn("dbo.Listing", "ListedByUserId");
CreateIndex("dbo.Listing", "OfferedByUserId");
AddForeignKey("dbo.Listing", "OfferedByUserId", "dbo.User", "UserId", cascadeDelete: true);
}
}
Khi tôi chạy mà Add-Migration một lần nữa, Lên/Xuống phương pháp trong tập tin đó là chính xác giống như những.
Tôi khá ấn tượng rằng việc di chuyển đã có thể phát hiện chính xác rằng tôi đã đổi tên thành cột ForeignKey; nhưng đó là những gì đang gây ra điều này để choke?
Dường như có một công việc xung quanh: Tôi đã xóa cơ sở dữ liệu, và tất cả các tệp di chuyển và tạo một Di chuyển 'ban đầu' mới, nhưng tôi không muốn làm điều này nếu có thể.
Cập nhật: Đây là không sự di cư mới nhất mà gây ra vấn đề này, nhưng vấn đề bắt đầu sau một merge (Tôi đang làm việc một mình, nhưng tôi mô phỏng làm việc theo nhóm trên các chi nhánh để tìm hiểu thêm về git quá), và cố gắng để có được cơ sở dữ liệu trong bước với hợp nhất. Điều này có thể đến từ việc đặt di chuyển theo một số thứ tự cụ thể sau khi hợp nhất - mặc dù đã lưu ý, việc di chuyển đã làm hoạt động như mong đợi theo thứ tự chúng chạy khi tôi cung cấp cho họ một DB trống.
Ngoài ra, di chuyển ban đầu này cần tinh chỉnh thủ công khi bảng có dữ liệu, vì dữ liệu cần được sao chép từ cột cũ sang cột mới. Tuy nhiên, tôi đã thử nghiệm tệp đó có và không có chỉnh sửa thủ công của tôi trong tệp đó và vẫn gặp phải hành vi được ghi nhận.
Hi Mike Tôi không thể kiểm tra chéo trả lời của bạn là môi trường phát triển của tôi là dài biến mất, nhưng acceptng là câu trả lời như bạn đã cung cấp hấp dẫn lý luận (và một bình luận di chuyển tốt đẹp ở trên :) – Nij
Cảm ơn bạn đã giải thích điều này. Tôi đã làm việc ra làm điều này như là một "sửa chữa" nhưng không vui khi kiểm tra nó mà không hiểu tại sao nó hoạt động. –
công trình này nhưng nó là khủng khiếp, tôi không có gì để có một di chuyển không-làm gì mỗi khi tôi có một thay đổi silli –