Tôi làm việc tại một công ty chỉ sử dụng các thủ tục được lưu trữ cho tất cả các truy cập dữ liệu, điều này gây khó chịu khi giữ cho cơ sở dữ liệu cục bộ của chúng tôi đồng bộ vì mọi cam kết chúng tôi phải chạy các procs mới. Tôi đã sử dụng một số ORM cơ bản trong quá khứ và tôi thấy trải nghiệm tốt hơn và sạch hơn nhiều. Tôi muốn đề xuất với người quản lý phát triển và phần còn lại của nhóm rằng chúng tôi xem xét sử dụng ORM Of một số loại để phát triển trong tương lai (phần còn lại của nhóm chỉ quen với các thủ tục được lưu trữ và chưa bao giờ sử dụng bất kỳ thứ gì khác). Kiến trúc hiện tại là .NET 3.5 được viết như .NET 1.1, với "các lớp thần" sử dụng một triển khai lạ của ActiveRecord và trả về các DataSets chưa được xử lý được lặp trong các tệp phía sau mã - các lớp hoạt động như sau:
class Foo {
public bool LoadFoo() {
bool blnResult = false;
if (this.FooID == 0) {
throw new Exception("FooID must be set before calling this method.");
}
DataSet ds = // ... call to Sproc
if (ds.Tables[0].Rows.Count > 0) {
foo.FooName = ds.Tables[0].Rows[0]["FooName"].ToString();
// other properties set
blnResult = true;
}
return blnResult;
}
}
// Consumer
Foo foo = new Foo();
foo.FooID = 1234;
foo.LoadFoo();
// do stuff with foo...
Có khá nhiều không có ứng dụng của bất kỳ mẫu thiết kế. Không có bài kiểm tra nào (không ai biết cách viết bài kiểm tra đơn vị, và kiểm tra được thực hiện thông qua việc tải lên trang web theo cách thủ công và chọc ngoáy). Nhìn qua cơ sở dữ liệu của chúng tôi, chúng tôi có: 199 bảng, 13 lượt xem, 926 thủ tục được lưu trữ và 93 hàm. Khoảng 30 hoặc hơn các bảng được sử dụng cho các công việc hàng loạt hoặc những thứ bên ngoài, phần còn lại được sử dụng trong ứng dụng cốt lõi của chúng tôi.
Có đáng để theo đuổi một cách tiếp cận khác trong kịch bản này? Tôi chỉ nói về việc tiến lên phía trước vì chúng tôi không được phép cấu trúc lại mã hiện tại vì "nó hoạt động" vì vậy chúng tôi không thể thay đổi các lớp hiện có để sử dụng ORM, nhưng tôi không biết tần suất chúng tôi thêm các mô-đun mới thay thế thêm vào / sửa chữa các mô-đun hiện tại để tôi không chắc liệu ORM có phải là phương pháp phù hợp hay không (đã đầu tư quá nhiều vào các thủ tục được lưu trữ và DataSets). Nếu đó là lựa chọn đúng đắn, tôi nên trình bày trường hợp sử dụng như thế nào? Ra khỏi đầu tôi những lợi ích duy nhất tôi có thể nghĩ đến là có mã sạch hơn (mặc dù có thể không phải vậy, vì kiến trúc hiện tại không phải là ' Được xây dựng với các ORM trong tâm trí, vì vậy về cơ bản chúng tôi sẽ là các ORM gian lận trong các mô-đun trong tương lai nhưng các mô-đun cũ vẫn sẽ sử dụng DataSets) và ít gặp rắc rối hơn khi phải nhớ các tập lệnh thủ tục nào đã được chạy và cần chạy, vv nhưng đó là nó, và tôi không biết làm thế nào hấp dẫn một cuộc tranh luận sẽ được. Bảo trì là một mối quan tâm khác nhưng một điều mà không ai ngoại trừ tôi dường như quan tâm.