2016-09-26 2 views
0

я прочитал эту статью https://romiller.com/2012/08/15/code-first-stored-procedures-with-multiple-results/EF Code First и хранимые процедуры возвращают несколько результатов

и пытался реализовать следующий код для обработки хранимой процедуры, которая возвращает несколько наборов результатов.

Это пространство имен я включены:

using System.Data; 
using System.Data.SqlClient; 
using System.Data.Entity; 
using System.Data.Entity.Infrastructure; 
using System.Data.Objects; 

Смотрите мой полный код

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.Entity; 
using System.Data.Entity.Infrastructure; 
using System.Data.Objects; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using EFTest.demo1; 

namespace EFTest 
{ 
    public partial class CallSP : Form 
    { 
     public CallSP() 
     { 
      InitializeComponent(); 
     } 

     private void button4_Click(object sender, EventArgs e) 
     { 
      using (var db = new TestDBContext1()) 
      { 
       db.Database.Initialize(force: false); 
       // Create a SQL command to execute the sproc 
       var cmd = db.Database.Connection.CreateCommand(); 
       cmd.CommandText = "[dbo].[MultiResultSet]"; 

       try 
       { 

        db.Database.Connection.Open(); 
        // Run the sproc 
        var reader = cmd.ExecuteReader(); 

        // Read Blogs from the first result set 
        var blogs = ((IObjectContextAdapter)db) 
         .ObjectContext 
         .Translate<Customer>(reader, "Customers", MergeOption.AppendOnly); 


        foreach (var item in blogs) 
        { 
         Console.WriteLine(item.Name); 
        } 

        // Move to second result set and read Posts 
        reader.NextResult(); 
        var posts = ((IObjectContextAdapter)db) 
         .ObjectContext 
         .Translate<Addresses>(reader, "Addresses", MergeOption.AppendOnly); 


        foreach (var item in posts) 
        { 
         Console.WriteLine(item.Title); 
        } 
       } 
       finally 
       { 
        db.Database.Connection.Close(); 
       } 
      } 

     } 
    } 
} 

Мой пример хранимой процедуры, которая возвращает несколько результирующий набор

CREATE PROCEDURE [dbo].[MultiResultSet] 
AS 
    SELECT * FROM Customers 

    SELECT * FROM Addresses 

Я получаю ошибку компиляции.

Лучший перегружен матч метод «System.Data.Entity.Core.Objects.ObjectContext.Translate (System.Data.Common.DbDataReader, строки, System.Data.Entity.Core.Objects.MergeOption) 'имеет некоторые недопустимые аргументы

Пожалуйста, помогите мне, что исправить, в результате не должно быть ошибок компиляции.

Благодаря

+0

Вы используете EF5? –

ответ

0

Используйте MergeOption из пространства имен System.Data.Entity.Core.Objects вместо использования MergeOption из System.Data.Objects

var blogs = ((IObjectContextAdapter)db) 
         .ObjectContext 
         .Translate<Customer>(reader, "Customers", System.Data.Entity.Core.Objects.MergeOption.AppendOnly); 

и

var posts = ((IObjectContextAdapter)db) 
         .ObjectContext 
         .Translate<Addresses>(reader, "Addresses", System.Data.Entity.Core.Objects.MergeOption.AppendOnly); 
Смежные вопросы