Tôi có thể sẽ chịu trách nhiệm chuyển một ứng dụng vb6 sang C#. Ứng dụng này là một ứng dụng cửa sổ tương tác với một db truy cập. Việc truy cập dữ liệu được đóng gói trong các đối tượng kinh doanh cơ bản. Một lớp cho một bảng cơ bản. Các đối tượng kinh doanh vb6 hiện có đọc và ghi vào DB thông qua DAO. Tôi đã viết DAL và ORM một vài lần trước nhưng tất cả chúng chỉ nhắm mục tiêu SQL Server. Điều này sẽ cần phải nhắm mục tiêu truy cập và máy chủ sql. Trong các dự án trước, tôi sẽ đặt các chuỗi SQL trong các phần riêng của đối tượng nghiệp vụ và có thể di chuyển mã sql thừa như kết nối, tạo lệnh, vào một lớp cơ sở chung để giảm mã.Bạn đặt câu lệnh SQL vào các dự án C# ở đâu?
Lần này, tôi đang nghĩ đến việc viết chuỗi SQL vào tệp .settings hoặc một số tệp văn bản khóa/giá trị khác. Sau đó tôi sẽ viết một tiện ích sql để chỉnh sửa tệp này và cho phép tôi chạy và kiểm tra các truy vấn được tham số hóa. Các truy vấn này sẽ được tham chiếu theo tên trong đối tượng nghiệp vụ thay vì nhúng sql vào mã.
Tôi biết cách tiếp cận tiêu chuẩn là tạo DAL cho từng cơ sở dữ liệu được nhắm mục tiêu và có trạng thái cấu hình DAL để sử dụng. Tôi thực sự không muốn tạo hai lớp DAL cho mỗi cơ sở dữ liệu. Có vẻ như nó sẽ ít mã hơn nếu tôi chỉ tham chiếu truy vấn chính xác bằng tên khóa và có loại kết nối thích hợp.
Vì vậy, các bạn có đang làm những việc như thế này không? Làm thế nào hoặc có bạn tiếp cận vấn đề này? Điều gì phù hợp nhất với bạn?
Cảm ơn!
Tôi đã sử dụng phương pháp này và tôi thích nó. Không giống như hầu hết mọi người, tôi không đồng ý với việc có thể thay đổi mã khi đang chạy, ngay cả các câu lệnh SQL đơn giản, vì vậy thực tế là nó được biên dịch với assembly là một điểm cộng với tôi. – Chris
Vui mừng khi biết cách tiếp cận này đang được người khác sử dụng và chào đón! :-) Và tôi đồng ý - đôi khi công cụ nướng vào bit biên dịch của bạn là một lợi thế. –
Thay vì không gian tênPart, sử dụng this.GetType() .Không gian tên cho phiên bản hiện tại, động, và typeof (Chương trình) .Không gian tên cho tĩnh. Tất nhiên khi bạn đặt nó vào lớp Program là tĩnh. Đừng quên, khi tệp SQL của bạn nằm trong thư mục SQL, hãy tham khảo nó bằng "SQL.StatementName.sql" – Harry