2012-07-03 26 views
6

Tôi đang sử dụng Entity Framework 5.0 RC với cơ sở dữ liệu LocalDB được cấu hình sẵn với VS 2012 RC để tạo và thử nghiệm cơ sở dữ liệu mã đầu tiên.Đặt lại cơ sở dữ liệu mã đầu tiên của EF trong LocalDB

Sau một vài chu kỳ thay đổi cơ sở dữ liệu mã đầu tiên và chạy "cơ sở dữ liệu cập nhật", tôi đã thực hiện một thay đổi lớn và tự động chuyển không thành công. Tôi không quan tâm đến việc giải quyết xung đột này vì đây chỉ là tạo mẫu, vì vậy việc mất dữ liệu là tốt.

Làm cách nào để đặt lại hoặc xóa cơ sở dữ liệu? Đặt lại cũng phải đặt lại bảng di chuyển, có vẻ như bị ẩn khỏi Máy chủ Explorer trong Visual Studio.

+0

Tôi đã tìm thấy một số bài viết về cách làm cho bảng __MigrationHistory thành một bảng không thuộc hệ thống, cho phép tôi xóa tất cả các bảng và lịch sử di chuyển từ bên trong Server Explorer. Tuy nhiên, không phải là một cách rất nhanh chóng để thiết lập lại vì vậy tôi mở cho các ý tưởng ở đây. Một điểm khác mà tôi gặp phải là KHÔNG sử dụng AutomaticMigration, mà tôi đã có.Khi được kích hoạt nó là một nỗi đau để thoát ra khỏi một lỗi di chuyển, bởi vì không có mã để xem những gì đang xảy ra. – angularsen

+2

Bạn có thể tạo lại cơ sở dữ liệu bằng cách đặt Initializer 'Database.SetInitializer (mới AlwaysRecreateDatabase ()); ' – mfussenegger

+0

Cảm ơn, vâng tôi đã biết điều đó và tôi nghĩ rằng tôi đã thành công khi chạy mã đó trong một ứng dụng bàn điều khiển . Vẫn đang tìm kiếm thứ gì đó dễ dàng hơn cho mọi người trong nhóm làm bất cứ khi nào cơ sở dữ liệu cần được đặt lại, chẳng hạn như tập lệnh SQL để thực thi. – angularsen

Trả lời

8

Drop toàn bộ cơ sở dữ liệu trong Visual Studio

  1. mở SQL Server Object Explorer
  2. Tìm cơ sở dữ liệu bạn đang làm việc với Nhấp chuột phải và chọn xóa
  3. Chọn hai hộp kiểm tra (Xóa sao lưu và khôi phục lịch sử và Đóng các kết nối hiện có) và nhấp vào ok
  4. Chạy lại chương trình và nó sẽ tạo lại cơ sở dữ liệu
+0

Đã lâu rồi kể từ câu hỏi này, nhưng có đây là cách tiếp cận mà tôi hiện đang sử dụng để đặt lại DB. Trên một lưu ý phụ, tôi không chắc chắn khi điều này thay đổi, nhưng trong các dự án gần đây của tôi bảng lịch sử di chuyển dường như không còn là một bảng hệ thống. – angularsen

1

Cho đến nay, đây là cách tiếp cận tốt nhất mà tôi đã tìm thấy.

  1. Tạo __MigrationHistory bảng không thuộc hệ thống.
  2. Thực thi tập lệnh SQL để thả tất cả các bảng.

Để thay đổi bảng __MigrationHistory, hãy xem this article để xử lý cả cơ sở dữ liệu hiện có và cơ sở dữ liệu mới được tạo bằng mã đầu tiên.

Các kịch bản SQL như sau:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"; 

Tôi đang sử dụng Database .NET v4 Free để chạy kịch bản SQL này, bởi vì Visual Studio 11 RC bản sao của tôi sẽ không cho phép tôi chạy các truy vấn trên LocalDB đối với một số lý do. Ngoài ra, tôi cần phải chạy kịch bản hai lần để nó thả tất cả các bảng do một số khóa ngoại. Tôi đã không bận tâm sửa chữa này vì nó có vẻ hoạt động tốt như nó được.

0

tôi phải đối mặt với những vấn đề tương tự, nhưng tôi tìm thấy một cách để xem bảng __MigrationHistory của istance LocalDB, thay vì sử dụng Server Explorer bạn nên thử SQL Server Object Explorer, bạn sẽ tìm thấy bàn dưới Bảng hệ thống của cơ sở dữ liệu đã tạo.

Bạn pháo trực tiếp xuất dữ liệu bằng cách sử dụng lệnh dữ liệu chế độ xem trên bảng nhưng bạn có thể truy vấn nó mà không gặp bất kỳ sự cố nào.

select * from __MigrationHistory 

Vì vậy, bạn có thể thả nó làm bài viết mà bạn đã báo cáo cho di chuyển hiện có.