2012-11-21 31 views
5

Tôi đang sử dụng .NET 3.5 và xem mã cũ do người khác thực hiện và cố gắng thêm bảo mật và cập nhật nó.Thực tiễn tốt nhất để truy cập dữ liệu trong .NET (non MVC)

Thực tiễn tốt nhất để truy cập dữ liệu trong dự án biểu mẫu web là gì?

Hiện nay tôi đang thay đổi mã để sử dụng SQL tham số hóa, như vậy:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString)) 
{ 
    using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn)) 
    { 
     myCommand.Parameters.AddWithValue("search1", mySearchVar); 
     ... 

Tôi biết SQL parametization là quan trọng, nhưng tôi thấy những người khác sử dụng thủ tục lưu trữ? Có cách nào khác, thực hành tốt nhất để theo dõi?

+1

.net 3.5, bất kỳ lý do nào bạn không muốn sử dụng EntityFramework? – Pluc

+0

Tôi sử dụng LINQ to Entity Framework. – adripanico

+0

Tham số vốn là một phần của thủ tục được lưu trữ – StingyJack

Trả lời

7

Nếu nó không chỉ là refactoring nhỏ và bạn có thời gian để viết lại lớp truy cập dữ liệu của bạn, sử dụng một số ORM:

NHibernate

Entity Framework

Dapper.NET (Stackoverflow ORM)

BLToolkit

+0

Andif bạn cần phải nhanh - BLToolkit. Ít tính năng hơn, nhưng nó đánh bại hekk của người khác mà bạn đặt tên về hiệu suất. Sử dụng nó để phát hành hàng triệu câu lệnh SQL mỗi phút tới một máy chủ cơ sở dữ liệu lõi 96 năm trước cho tải ETL. – TomTom

+0

EF có cung cấp bất kỳ lần truy cập hiệu suất nào không? – cdub

+0

@TomTom đồng ý. cũng đã thêm Dapper. –

-1

Khuôn khổ thực thể là một trong những 'thực hành tốt nhất' và một Microsoft đẩy mạnh nhất. Nhưng không có phương pháp truy cập dữ liệu tốt nhất.

Sau một số trải nghiệm không tốt với hiệu suất của EF và các ORM khác, tôi thường chỉ cần xóa hoàn toàn mã nguồn hoặc sử dụng các công cụ tạo mã để tạo mã được tạo ra cho ứng dụng cụ thể.

Có rất nhiều cách thực hành không tốt và bạn đang tránh một khóa quan trọng bằng cách chuyển sang tham số hóa.

Cá nhân tôi không thấy bất kỳ điểm nào trong procs được lưu trữ hiện nay, trừ khi bạn sẽ sử dụng chúng hoàn toàn - nghĩa là ngăn chặn bất kỳ sửa đổi dữ liệu nào ngoài procs được lưu trữ. Nếu đó là trường hợp nó có thể cung cấp cho bạn một số tiện nghi trên các loại sửa đổi có thể cho dữ liệu của bạn.

Vì vậy, đây không thực sự là câu trả lời - thực sự không có câu hỏi nào - câu hỏi của bạn mở ra một chủ đề thảo luận lớn. Đã đến lúc mua một số sách hoặc bận rộn với Google.

4

Không có gì sai khi sử dụng ADO.NET. Đó là những gì thúc đẩy tất cả các giải pháp ORM trong .NET.

Tuy nhiên, có vẻ như các nhà phát triển .NET đang chạy theo các bước nhảy để nhảy vào băng nhóm ORM. ORM chỉ là một trong nhiều công cụ trong hộp công cụ truy cập dữ liệu.

Vào đầu những năm 2000, ORM đã đưa thế giới Java theo bão. Các thủ tục lưu trữ đã bị tránh xa. Đó là ORM hoặc không có gì. Một nửa thập kỷ sau, các nhà phát triển Java nhận ra rằng giải pháp tốt nhất sử dụng cả một thủ tục ORM và được lưu trữ, mỗi thủ tục đều có thế mạnh.

Sử dụng công cụ tốt nhất cho công việc. ORM có thể tự động hóa nhiều CRUD từ ứng dụng. Các thủ tục được lưu trữ rất tốt cho việc thêm trừu tượng, thêm một lớp bảo mật và tối ưu hóa vùng cần phải có hiệu năng cao.

Chọn công cụ tốt nhất cho công việc.

+2

+1: Từ vàng: Chọn công cụ tốt nhất cho công việc! Tuy nhiên, việc chọn các công cụ tốt nhất đòi hỏi kiến ​​thức âm thanh về miền vấn đề (bao gồm các ràng buộc) và ưu điểm/nhược điểm của các công cụ đang được đánh giá. – dotnetguy

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