2015-09-01 14 views
11

Tôi đang sử dụng di chuyển EF và có một bảng có nhiều dữ liệu. Tôi cần phải thay đổi MaxLength của một cột bê tông (nó không có độ dài hạn chế).Lệnh "Cập nhật cơ sở dữ liệu" không thành công với ngoại lệ TimeOut

ALTER TABLE MyDb ALTER COLUMN [MyColumn] [nvarchar](2) NULL 

Và lệnh này không thành công với ngoại lệ TimeOut. Đã cố gắng thiết lập trình tạo CommandTimeout i nDbContext mà không có bất kỳ sự may mắn nào.

Có cách nào để vô hiệu hóa hoặc thiết lập thời gian chờ cho các lệnh EF của Trình quản lý gói không?

Trả lời

16

Tìm giải pháp một mình.

Kể từ EF5 có một tài sản mới CommandTimeout trong đó có sẵn từ DbMigrationsConfiguration

internal sealed class MyMigrationConfiguration : DbMigrationsConfiguration<MyDbContext> 
{ 
    public Configuration() 
    { 
     CommandTimeout = 10000; // migration timeout 
    } 
} 
+0

đừng quên đánh dấu là đã trả lời. – tschmit007

+1

Điều gì gọi phương thức Cấu hình trong ví dụ đó? Hoặc là nghĩa vụ phải là một phương thức khởi tạo (và trong ví dụ nó vô tình không khớp với tên lớp)? –

+0

thử cách này: https://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer hoặc điều này: http://www.entityframeworktutorial.net/code-first/code-based-migration-in- code-first.aspx – deeptowncitizen

10

Ngoài kịch bản ra sự thay đổi bằng cách sử dụng

Update-Database -script 

Sau đó bạn có thể lấy kịch bản và chạy nó sử dụng SQL Management Studio dựa vào cơ sở dữ liệu.

+0

Cảm ơn mẹo này! Tôi đã không nhận ra bạn có thể làm điều này. :-) – jallen

+0

Tập lệnh được tạo ở đâu? Tôi đã thử điều này, nhưng không nhận được một kịch bản. Nó có lưu nó như một tập tin ở đâu đó không? –

+0

Hey, Đã lâu rồi kể từ khi tôi sử dụng nó, nhưng tôi khá chắc chắn nó đã đổ nó vào giao diện điều khiển? – Slavvy

0

Tôi gần như hoàn toàn giống nhau: thời gian chờ đã hết hạn khi cố gắng tăng độ dài cột. Đối với tôi, việc sử dụng update-database đã hoạt động tốt một giờ trước. Vấn đề hóa ra là một giao dịch mở trên cơ sở dữ liệu và bảng tôi đã cố gắng thay đổi. Khi tôi đã khôi phục giao dịch đó, lệnh update-database đã được thực hiện mà không gặp sự cố nào.

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