Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xử lý nhiều kết quả từ một thủ tục được lưu trữ với SqlQuery

DbContext không có hỗ trợ gốc để hiện thực hóa nhiều tập kết quả. Tuy nhiên, sẽ dễ dàng đạt được bằng cách thả xuống ObjectContext và sử dụng Translate phương pháp sao chép kết quả từ DbDataReader thành các thực thể trong mô hình miền của bạn.

Đây là một số mã ví dụ. Điều này giả định ReferrerStatisticResult của bạn chỉ là vùng chứa cho hai danh sách được gọi là Set1Set2 . Rõ ràng là điều chỉnh theo mô hình miền thực tế của bạn.

// Create container ready for the resultsets
var result = new RefererStatisticResult();

using (var myContext = new MyContext())
{
    // Create command from the context in order to execute
    // the `GetReferrer` proc
    var command = myContext.Database.Connection.CreateCommand();
    command.CommandType = System.Data.CommandType.StoredProcedure;
    command.CommandText = "[dbo].[GetReferrer]";
    // add in command parameters
    // (not shown)

    try
    {
        myContext.Connection.Open();
        var reader = command.ExecuteReader();

        // Drop down to the wrapped `ObjectContext` to get access to
        // the `Translate` method
        var objectContext = ((IObjectContextAdapter)myContext).ObjectContext;

        // Read Entity1 from the first resultset
        result.Set1 = objectContext.Translate<Entity1>(reader, "Set1", MergeOptions.AppendOnly);

        // Read Entity2 from the second resultset
        reader.NextResult();
        result.Set2 = objectContext.Translate<Entity2>(reader, "Set2", MergeOptions.AppendOnly);        
    }
    finally
    {
        myContext.Database.Connection.Close();
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục sự cố tắc nghẽn I / O trên đĩa

  2. Không thể cắt ngắn bảng vì nó đang được tham chiếu bởi ràng buộc NGOẠI KHÓA - Hướng dẫn sử dụng SQL Server / TSQL Phần 70

  3. Kết nối các ứng dụng chạy trên Linux với Amazon Relational Database Services (RDS) for SQL Server

  4. Cách tắt tất cả các Ràng buộc Kiểm tra trong Cơ sở dữ liệu SQL Server - Hướng dẫn SQL Server / TSQL Phần 87

  5. ExecuteScalar so với ExecuteNonQuery khi trả về giá trị nhận dạng