2011-11-11 26 views
5

Chúng tôi có một quy trình mà kịch bản lệnh cơ sở dữ liệu của chúng tôi thay đổi (và phiên bản chúng bằng Juneau) thành cơ sở dữ liệu của ứng dụng của chúng tôi với cơ sở mã của chúng tôi. Họ đang tốt tại kế toán cho các cột mới là null, và không xóa dữ liệu hiện có, nhưng đôi khi một cột đổi tên lén lút trong đó không phải là hoàn toàn giao tiếp. Vì vậy, họ sẽ thực hiện một số thay đổi đối với lược đồ cơ sở dữ liệu trên máy chủ thử nghiệm, chúng tôi sẽ cập nhật Entity Framework để làm việc với những thay đổi đó và sau đó cam kết mã của chúng tôi. Quá trình này hoạt động tốt, ngoại trừ khi đến lúc triển khai.Xác minh rằng lược đồ cơ sở dữ liệu đích tuân thủ những gì trong Khuôn khổ thực thể?

Chúng tôi đã thiết lập TFS để triển khai xây dựng thành công cho các máy chủ thích hợp, nhưng không đảm bảo rằng cơ sở dữ liệu cho môi trường đó đã được cập nhật. Chúng tôi không quan tâm nếu các trường/bảng/lượt xem bổ sung/v.v. tồn tại trong cơ sở dữ liệu đích, nhưng chúng tôi muốn thay đổi bản dựng để kiểm tra xem cơ sở dữ liệu có chứa ít nhất mọi thứ mà EF nhận thức được không.

Tôi đã xem this question, nhưng tôi không cần lược đồ để khớp chính xác. Ngoài ra, chúng tôi không muốn nó tạo/sửa đổi cơ sở dữ liệu trực tiếp. Và this question có vẻ như nó đang cố gắng để đạt được một lý tưởng tương tự, nhưng vẫn không hoàn toàn những gì chúng tôi đang tìm kiếm để đạt được. Chúng tôi chỉ muốn thử nghiệm tích hợp các loại để xác minh phiên bản EF của chúng tôi sẽ hoạt động với lược đồ đích.

Trả lời

1

Tôi tự hỏi tại sao bạn cố gắng triển khai ứng dụng của mình mà không thay đổi cơ sở dữ liệu. Ứng dụng của bạn phụ thuộc vào cơ sở dữ liệu, do đó việc triển khai phải luôn được thực hiện sau cơ sở dữ liệu. Có vẻ như bạn sẽ đầu tư rất nhiều thời gian để phát triển xác thực để khắc phục quá trình triển khai không chính xác của bạn (nơi sửa chữa quy trình là giải pháp chính xác).

Dù sao bạn có thể tạo một số "xác nhận" của cơ sở dữ liệu nhưng sẽ mất một thời gian. Nếu bạn đang sử dụng tệp EDMX, bạn có thể mở nó dưới dạng XML và đọc phần SSDL mô tả tất cả các bảng, cột, quan hệ, dạng xem dự kiến ​​(dưới dạng truy vấn SQL SELECT), thủ tục và chức năng được lưu trữ. Bạn có thể phân tích phần XML này và sử dụng các khung nhìn cơ sở dữ liệu hệ thống (sys.tables, sys.columns, ...) để truy vấn nếu các đối tượng này tồn tại trong cơ sở dữ liệu.

Một cách tiếp cận khác có thể sử dụng cơ sở dữ liệu khác biệt. công cụ để so sánh cơ sở dữ liệu thử nghiệm hiện tại của bạn với cơ sở dữ liệu đích. Điều này sẽ yêu cầu công cụ có thể được thực hiện từ dòng lệnh và bạn sẽ phải phân tích đầu ra của nó để tìm các thay đổi đột phá.

+1

Tôi hoàn toàn đồng ý về quy trình triển khai, nhưng anh chàng cơ sở dữ liệu không tin tưởng các tập lệnh triển khai được tạo thông qua Juneau nhưng hoàn toàn tự động hóa việc nâng cấp cơ sở dữ liệu. Vì vậy, chúng ta cần xác minh rằng không ai thực hiện thay đổi thủ công đối với cơ sở dữ liệu được nhắm mục tiêu hoặc chỉ áp dụng một phần tập lệnh được nâng cấp. –

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