Tôi có một thủ tục được lưu trữ trả về một giá trị, không phải tập dữ liệu và tôi gặp sự cố khi làm việc với EF4.Gọi thủ tục lưu sẵn với các tham số
Tôi đã nhìn thấy điều này: http://dotnet.dzone.com/news/how-retrieve-stored-procedure
Dưới đây là những gì tôi đã làm: Tôi đã thêm một thủ tục để các mô hình, và nhập khẩu một hàm.
Vấn đề đầu tiên tôi gặp phải là thông số trong quy trình của tôi có tên là @_Parameter_in
. Điều đó khiến EF mang chúng vào như p_Parameter_in
vì nó sẽ không hoạt động với dấu gạch dưới là ký tự đầu tiên. Sau đó, khi tôi gọi là thủ tục được lưu trữ, tôi có thể thấy trong SQL Profiler gọi rằng nó tìm kiếm @p_Parameter_in
, và tất nhiên có một vấn đề với điều đó.
Bây giờ tôi đã đổi tên các tham số và nhìn vào Dấu vết SQL - mọi thứ đều hoạt động tốt. Vấn đề là tôi không thể có được giá trị. Dưới đây là cách mã của tôi trông như thế nào:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
Sau khi gọi newKey.Value
, giá trị này luôn bằng 0 hoặc bất kỳ giá trị nào tôi đặt. Nó không mang lại giá trị. Tôi nghi ngờ vấn đề của tôi là với cách tôi nhập hàm. Tôi sử dụng Scalars và kiểu dữ liệu Int32
. "Tạo kiểu phức hợp mới" bị tắt cho tôi vì một lý do nào đó. Có ai có vấn đề đó không?
Đó là một cái gì đó để xem xét, tôi chỉ có thể sửa đổi thủ tục để làm việc như thế này. Hiện tại tôi không trả lại giá trị vô hướng. Tôi gán giá trị cho tham số OUTPUT trong thủ tục lưu sẵn. – katit
Điều đó không hoạt động. Tôi gặp lỗi "Trình đọc dữ liệu được nhà cung cấp dữ liệu lưu trữ trả lại không có đủ cột cho truy vấn được yêu cầu" – katit
Ok, tôi đã làm cho trình đọc dữ liệu hoạt động. Với việc chọn @MyValue ở cuối proc được lưu trữ. Câu hỏi vẫn mở nếu có thể sử dụng tham số OUTPUT với EF .. – katit