Tôi đang viết lại SQL nội tuyến trong lớp lưu trữ của mình để sử dụng các thủ tục được lưu trữ thay thế (yêu cầu bảo mật). Sau khi sử dụng Fluent NHibernate và Linq2Sql trong quá khứ, tôi thấy nó cực kỳ khó sử dụng và không thích hợp.Cách thanh lịch nhất để sử dụng các thủ tục được lưu trữ là gì?
EDIT: Để làm rõ, tôi không tìm kiếm giải pháp ORM hoạt động với procs được lưu trữ. Tôi chỉ muốn một số lời khuyên về một cách tốt đẹp để viết mã dưới đây.
Có bất kỳ chiến lược nào để làm cho loại mã này càng thanh lịch càng tốt?
string commandText = "dbo.Save";
using (SqlConnection sql = new SqlConnection(_connString.ConnectionString))
using (SqlCommand cmd = sql.CreateCommand())
{
cmd.CommandText = commandText;
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter idParam = new SqlParameter("identity", item.Identity);
idParam.Direction = ParameterDirection.Input;
SqlParameter nameParam = new SqlParameter("name", item.Name);
nameParam.Direction = ParameterDirection.Input;
SqlParameter descParam = new SqlParameter("desc", item.Description);
descParam.Direction = ParameterDirection.Input;
SqlParameter titleParam = new SqlParameter("title", item.)
descParam.Direction = ParameterDirection.Input;
//SNIP More parameters
cmd.Parameters.Add(idParam);
cmd.Parameters.Add(descParam);
cmd.Parameters.Add(titleParam);
//SNIP etc
sql.Open();
cmd.ExecuteNonQuery();
//Get out parameters
}
return item;
Ooh cảm ơn những người đứng đầu ở đó! Tôi không thấy điều này. –
Có tin đồn rằng EntLib sẽ được cập nhật cho .NET 3.5 để hỗ trợ LINQ. –
SqlHelper cũng sẽ lưu bộ nhớ cache các tham số trong _some_ của quá tải, mà sẽ lưu các chuyến đi đến db. Trong đoạn mã trên, .NET sẽ đi vòng quanh db để khám phá kiểu dữ liệu cho @ Parameter1, v.v. Hãy chắc chắn để đọc về việc sử dụng nó. – Daniel