Là Mã khung thực thể Đầu tiên hơi vô nghĩa / vô dụng trong sản xuất và chiến lược EF tốt cho sản xuất là gì?


29

Tôi đã lập trình gần đây với Entity Framework 4.1 Code Trước tiên và tôi yêu thích nó để phát triển, nhưng chỉ với một kế hoạch kết thúc và danh sách tính năng thay đổi nhanh chóng, tôi liên tục sửa đổi Class / Database để đáp ứng nhu cầu của ứng dụng.

Trong quá trình phát triển, không có dữ liệu trực tiếp và tôi có thể dễ dàng xóa toàn bộ cơ sở dữ liệu để nó được tạo lại với lược đồ mới, tuy nhiên, rõ ràng, khi trực tiếp - điều này rất tệ!

Các giải pháp duy nhất tôi có thể thấy là bỏ bảng siêu dữ liệu và giữ cơ sở dữ liệu theo cách thủ công hoặc về cơ bản thả và đặt lại.

Cá nhân tôi thích phương thức đầu tiên vì tôi nghĩ việc thêm một cột / bảng sẽ dễ dàng hơn rất nhiều so với việc tạo lại và di chuyển dữ liệu, nhưng, trừ khi tôi đã bỏ lỡ điều gì đó, điều này hoàn toàn di chuyển khỏi Code First.

Vì vậy, câu hỏi thực sự là, Code First chỉ nói về sự phát triển ban đầu và đâu là một chiến lược tốt để quản lý EF cho môi trường sản xuất?


Có ý nghĩa khi hỏi điều này trong vài ngày, không chắc là nó tốt nhất ở đây hay trên Stack Overflow ...
wilhil

Câu trả lời:


15

Ý kiến ​​của tôi là việc tạo cơ sở dữ liệu tự động đầu tiên của mã chỉ dành cho phát triển. Tôi đã trả lời các câu hỏi tương tự trên Stack Overflow nơi tôi đã mô tả cả cách nâng cấp cơ sở dữ liệu và tại sao chức năng tự động bị lỗi trong sản xuất:

Nâng cấp cơ sở dữ liệu là nhiệm vụ bán thủ công. Không nên có phép thuật tự động chưa được kiểm tra phía sau - hơn nữa, hiện tại EF 4.1 không có bất kỳ phép thuật nào như vậy (chỉ có một số bài trình bày về các tính năng mà nhóm ADO.NET đang làm việc).

Bạn cũng có thể kiểm tra câu hỏi này để hiểu rõ hơn về cách các trang web được nâng cấp.


Xin chào lần nữa! -bạn nhanh chóng vào câu hỏi của EF! :) ... Không biết tôi sẽ ở đâu nếu không có em!
wilhil

Vài tháng sau và chương trình của tôi đã kết thúc khá tốt ... Tôi đang đánh dấu đây là câu trả lời, nhưng, tôi đã tự hỏi liệu có gì thay đổi / có tài nguyên nào có thể giúp đỡ không?
wilhil

2
Bản xem trước công khai đầu tiên của "Di chuyển" đã được phát hành. blogs.msdn.com/b/adonet/archive/2011/07/27/...
Ladislav Mrnka

Cảm ơn, nhìn vào đó bây giờ! Tôi thích phát triển với Code First, nhưng, tôi rất lo lắng / lo lắng về việc thay đổi sau này!
wilhil

Làm thế nào để bạn xử lý trường hợp StoredProcs hoặc Lượt xem được tạo trực tiếp trong DB cho các mục đích khác, ví dụ như báo cáo không được ứng dụng sử dụng. Trước tiên, chúng ta cần biết SP nào bị ảnh hưởng bởi sự thay đổi lược đồ trong mã.
softveda

5

Duy trì các kịch bản nâng cấp .

Trong cơ sở dữ liệu, duy trì một bảng trong đó bản ghi được lưu giữ với phiên bản của lược đồ.

Khi ứng dụng của bạn khởi động, nó sẽ phát hiện phiên bản so với phiên bản được sử dụng bởi các nhị phân. Nếu nó khác, nó thực thi (hoặc yêu cầu người dùng) các kịch bản nâng cấp.

Đừng quên sao lưu cơ sở dữ liệu trước.


Bước tiếp theo: bạn bị sa thải;) Các bản cập nhật cơ sở dữ liệu không nên tự động mở mà không có bản sao lưu trước - và có thể trong thời gian chết, không phải khi MỘT NGƯỜI DÙNG chạy phiên bản mới hơn. Cách tiếp cận của bạn là hoàn hảo - để tắt các triển khai lớn hơn với hàng tấn lỗi.
TomTom

@TomTom: điều đó phụ thuộc. Chúng tôi đang chạy hoàn hảo một ứng dụng DB trong vài năm, thực hiện chính xác điều này: lược đồ tự động thay đổi cho bản phát hành mới, được thực hiện bởi ứng dụng khi phát hiện phiên bản quá cũ. Sao lưu được thực hiện hàng ngày và chúng tôi giữ cho tất cả các thay đổi lược đồ tương thích ngược (chỉ thêm các trường & bảng, không bao giờ xóa bất kỳ). Tôi đồng ý rằng các biện pháp bạn đã đề cập rất quan trọng khi các thay đổi không tương thích ngược và bạn không thể đảm bảo tất cả các ứng dụng khách được cập nhật đồng thời (ví dụ: đối với DB doanh nghiệp lớn).
Doc Brown

Trên đầu nếu những thay đổi là không tầm thường. Hãy thử thay đổi một trường trong bảng 2tb (và vâng, tôi xử lý vấn đề này - và nó thậm chí không phải là một kho dữ liệu). Bạn đã đặt mình vào một kịch bản mà bạn đang tích lũy nợ kỹ thuật bởi vì bạn có thể thực hiện THÊM các trường, không bao giờ dọn sạch.
TomTom

2

Câu hỏi có phần thiếu sót ở chỗ nó tạo ra các kết nối giữa mô hình lập trình và môi trường thời gian chạy không có.

Mã đầu tiên chủ yếu là trình điều khiển tốc độ phát triển và không thực sự được kết nối với hệ thống thời gian chạy.

Trong sản xuất, bạn sẽ có một cài đặt cấu hình từ chối thời gian chạy khả năng xóa / cập nhật mô hình db.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.