2012-02-20 36 views
18

Tôi đang sử dụng EF trong dự án MVC của mình. Trong dự án của tôi, tôi cần sử dụng các thủ tục lưu sẵn. Vấn đề của tôi là sử dụng tham số đầu ra với các thủ tục được lưu trữ. Tôi không có ý tưởng làm thế nào để làm điều đóTham số đầu ra với Entity Framework

Trả lời

30

Khi bạn tạo mô hình tổ chức của mình, bạn nên đảm bảo rằng bạn đã bao gồm các thủ tục được lưu trữ. Sau đó, tạo Nhập khẩu Chức năng cho họ:

  1. Mở Entity Model của bạn trong Visual Studio
  2. Mô hình trình duyệt nên mở ở phía bên phải của màn hình
  3. Trong Browser Model, bạn cần phải chọn lưu trữ quy trình và nhấp vào Thêm chức năng nhập để tạo chức năng cho quy trình được lưu trữ.
  4. Một hộp thoại sẽ mở ra để chọn quy trình được lưu trữ và trả lại loại

Vậy đó. Bây giờ bạn có thể sử dụng nó trong mã.

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Objects.ObjectParameter output = new System.Data.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
+0

cảm ơn bạn Dana ! –

+4

Tôi đã giải quyết mẫu tương tự trong mã của mình và tôi nhận thấy rằng thuộc tính Giá trị của thông số đầu ra được điền sau khi truy cập tập kết quả đầu ra. –

+1

@RudolfDvoracek Có, outputparameters được điền sau khi đọc (các) tập dữ liệu được đọc. – Anderson

10

Modified trả lời cho Entity Framework 6.x/VS 2015 - nhận thấy sự thay đổi không gian tên:

using (MyEntities myContext = new MyEntities())    
{     
    System.Data.Entity.Core.Objects.ObjectParameter output = new System.Data.Entity.Core.Objects.ObjectParameter("OutputParameterName", typeof(int));     
    myContext.GetCustomerCount(output);     
    Console.WriteLine(output.Value);    
} 
0

Đây là một cách khác để làm việc đó sử dụng khung Entity

YourDB db = new YourDB(); 
public double GetCategoryYearly(double Param1, double Param2, double Param3) 
{ 
    System.Data.Entity.Core.Objects.ObjectParameter OutputParam = new System.Data.Entity.Core.Objects.ObjectParameter("SPOutputParam", typeof(double)); 
    var objStoredProc = db.YourStoredProc(Param1, Param2, Param3, OutputParam).First(); 
    return Convert.ToDouble(OutputParam.Value); 
} 
Các vấn đề liên quan