Chúng tôi đang ở đầu của một dự án phát triển thực sự dài với một số dự án phụ. Về cơ bản mỗi tiểu dự án sẽ mất vài tháng để phát triển. Bản thân mã sẽ được chia thành nhiều dự án C#, nhưng cơ sở dữ liệu vật lý sẽ được chia sẻ bởi tất cả các dự án.DALs tương lai bằng chứng
Sự cố là khả năng bảo trì. Nếu chúng ta thêm một cột vào một bảng, hoặc chia một bảng thành hai bảng nhỏ hơn, chúng ta sẽ phải quay lại và sửa đổi C# DAL của chúng ta để hỗ trợ những thay đổi này. Điều này là không thể chấp nhận được, vì chúng tôi sẽ liên tục điều chỉnh DB phù hợp với nhu cầu của toàn bộ công ty, và không chỉ là nhu cầu của một chương trình đơn lẻ. Liên tục thay đổi mã cũ sẽ là một nhiệm vụ không bao giờ hết.
Những người DB của chúng tôi đã đề xuất một chế độ xem khác. Chúng tôi làm tất cả CRUD của chúng tôi thông qua các thủ tục được lưu trữ và sử dụng LINQ trên nhiều bảng để thực hiện các câu lệnh SELECT của chúng tôi. Sau đó, nếu chúng ta tái cấu trúc DB vài năm kể từ bây giờ, chúng ta có thể đơn giản cung cấp cùng một procs được lưu trữ và các khung nhìn và không phải sửa đổi mã cũ của chúng ta.
Câu hỏi chúng tôi có, là những gì ORM nên được sử dụng cho một cái gì đó như thế này? EF có vẻ hơi quá mức (có thể là không). Sẽ có một cái gì đó giống như SubSonic với nó là khuôn mẫu T4 cho phép một Dp simpiler (và có lẽ nhanh hơn)?
Hoặc có lẽ ai đó có ý tưởng về cách làm cho toàn bộ quá trình này ít đau đớn hơn? Chúng tôi không muốn thêm một lớp khác vào ứng dụng của chúng tôi, nhưng chúng tôi cũng không muốn quay lại và sửa đổi mã mỗi lần chúng tôi thực hiện thay đổi db.
Chỉnh sửa 1: Vì vậy, khi tôi nói "Tôi không thực sự muốn thêm các lớp khác". Điều này chủ yếu là vì chúng tôi đã có nhiều lớp. Chúng ta có các khung nhìn Silverlight, các mô hình khung nhìn, các đối tượng BLL (thông qua CSLA) sau đó chúng ta có DAL, và cuối cùng là các bảng SQL mà chúng có.
Vì vậy, bằng cách cố gắng để có một Schema để phục vụ tất cả, bạn về cơ bản sẽ đến với mô hình mà hút ít nhất. Tôi luôn tự hỏi làm thế nào mọi người có thể mong đợi để thay đổi DB mà không cần chạm vào Ứng dụng truy cập vào nó. Điều này có vẻ siêu thực. – flq
Tích hợp thông qua cơ sở dữ liệu đã hết thời trang vào cuối những năm 70. Trừ khi bạn đang sử dụng một OODB như Gemstone. –
Tôi là người duy nhất nghĩ rằng câu hỏi này sẽ nhận được nhiều lượt xem và nhiều câu trả lời nhưng không có câu trả lời thực sự hữu ích? –