Tôi đang sử dụng EF 4.3.1 Mã di chuyển đầu tiên. Tôi có một bảng như:Chuyển đổi EF: Di chuyển bảng từ 2 cột PK sang cột đơn gây ALTER trước DROP và không thành công
public class Product
{
[Key]
[Column(Order=0)]
[MaxLength(100)]
public string Store { get; set; }
[Key]
[Column(Order=1)]
[MaxLength(100)]
public string Sku { get; set; }
}
Tôi có một bảng hiện có được tạo bằng mã trên. Sau đó tôi chuyển nó đến một Primary Key single-cột:
public class Product
{
[MaxLength(100)]
public string Store { get; set; }
[Key]
[MaxLength(100)]
public string Sku { get; set; }
}
Điều này làm cho EF thất bại trong cuộc di cư tự động tiếp theo, phàn nàn:
ALTER TABLE [sản phẩm] ALTER COLUMN [Lưu trữ] nvarchar
Đối tượng 'PK_Product' phụ thuộc vào cột 'Lưu trữ'. ALTER TABLE ALTER COLUMN Lưu trữ không thành công vì một hoặc nhiều đối tượng truy cập cột này.
Rõ ràng PK_Product cần được xóa trước khi cố gắng kích hoạt câu lệnh ALTER này (tại sao nó thay đổi cột?), Nhưng thay vì di chuyển không thành công.
Tôi có làm gì sai hoặc đây có phải là lỗi không? Cách giải quyết?
Thêm-di chuyển được tạo trước các lệnh trên (và hơn thế nữa). Hóa ra chúng đơn giản là không đúng thứ tự - bằng cách di chuyển DropPrimaryKey như bạn đã ở trên đây trước khi thay đổi cột, nó đã được giải quyết. Vì vậy, để được rõ ràng việc di chuyển cuối cùng đã đi DropPrimaryKey, AlterColumn, AddPrimaryKey. Tôi nghĩ rằng đây là một lỗi trong Migrations cho sự đơn giản của giải pháp, chứ không phải là một giới hạn vốn có. –
Yup, do đó ** in đậm ** của tôi trong "sau" :-) –