Mã trong việc di chuyển ban đầu của tôi là như sauEF di cư: Lỗi thay đổi một lĩnh vực được lập chỉ mục để nullable
CreateTable( "dbo.Sites", c => new { Id = c.Int(nullable: false, identity: true), Description = c.String(maxLength: 450) }) .PrimaryKey(t => t.Id);
Vì vậy, rằng trường Mô tả sẽ là duy nhất tôi đã thêm dòng sau vào phần cuối của Phương thức UP
CreateIndex ("dbo.Sites", "Description", unique: true);
Sau đó, tôi quyết định đặt trường Mô tả là bắt buộc.
Việc chuyển mới tạo ra sự thay đổi sau
AlterColumn ("dbo.Sites", "Mô tả", c => c.String (nullable: false, maxLength: 450));
Tuy nhiên khi sự thay đổi này cố gắng để chạy tôi nhận được một lỗi
ALTER TABLE ALTER COLUMN Mô tả thất bại vì một hoặc nhiều đối tượng truy cập vào cột này.
tôi đã có thể cô lập các dòng SQL sử dụng các hồ sơ, như
ALTER TABLE [dbo]. [Sites] ALTER COLUMN [Mô tả] nvarchar NOT NULL
Mà cho cho tôi lỗi sau khi tôi chạy nó trong Management Studio
Msg 5074, Cấp 16, Tiểu bang 1, Line 1 Chỉ mục ' IX_Description 'phụ thuộc vào cột' Mô tả '. Msg 4922, Cấp 16, Tiểu bang 9, Dòng 1 ALTER TABLE ALTER COLUMN Mô tả không thành công vì một hoặc nhiều đối tượng truy cập cột này.
Làm cách nào để lấy mã di chuyển để giảm chỉ mục, sau đó thay đổi thay đổi cột và sau đó tạo lại chỉ mục?
Tôi đang sử dụng SQL Server 2008 R2
Sử dụng chỉ mục duy nhất có cột rỗng là lạ. Null là giá trị như bất kỳ khác để chỉ ONE hồ sơ sẽ có thể có giá trị Null nếu không bạn sẽ nhận được vi phạm ràng buộc duy nhất. –
Tôi mặc dù NULL! = NULL nhưng không nghĩ rằng tôi đã thử nó bản thân mình gần đây - giá trị kiểm tra đó. – Mark
Tôi muốn để trống là một tùy chọn hợp lệ trong hộp kết hợp. Tôi có nên có Null hoặc một chuỗi rỗng cho điều đó? –