2016-11-08 3 views
0

У меня есть выражение linq, которое мне нужно изменить на хранимую процедуру. Это выражение linq возвращает определенный объект из dbml (таблицы).Обратный объект из Сохраненная процедура в Linq

Дело в том, что когда я вызываю свою хранимую процедуру (скажем, SP_test), она возвращает массив SP_testResult, и я хочу, чтобы он возвращал определенную таблицу в качестве объекта.

Если я изменяю тип возврата SP в dbml, когда я проверяю результат, он ничего не возвращает, но если я запускаю SP сам по себе, он возвращает набор.

Есть ли способ определить тип возврата? скажем, что SP_test возвращает объект Client? (это таблица в моей модели dbml) или мне нужно сопоставить SP_testResult с объектом Client?

Я хочу от этого:

this.bookings = db.Bookings 
     .FilterUser(_main.Identity.GetUser()) 
     .Where(x => x.ProductId == PackageContent.ProductId && x.CampaignId == PackageContent.CampaignId && x.ClientId == PackageContent.ClientId) 
     .Where(x => Math.Abs((x.DateCreated - PackageContent.DateCreated).Days) < daysRange) 
     .ToList() 
     .Union(db.Bookings.Where(x => PackageContent.ExternCode == x.BussinessRefernce)) 
     .OrderBy(x => x.DateCreated); 

Для этого:

this.bookings = db.SP_SearchSimilarBookings.toList(); 

В обоих случаях this.bookings представляет собой массив из класса Bookings.

+0

Пожалуйста, покажите свой код. – sr28

+0

Где находится codE? ! – mybirthname

+0

Извините, я добавил код –

ответ

0

Возможно рассмотреть возможность сделать что-то вроде этого, чтобы сопоставить результаты SP к пользовательскому объекту:

//create your connection string 
string Conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 

using (SqlConnection connection = new SqlConnection(Conn)) 
{ 
    //add your SP to the SqlCommand 
    SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection); 
    cmd.CommandType = CommandType.StoredProcedure; 

    SqlParameter myParam = new SqlParameter("@YourParam", //Your SqlDbType); 
    myParam.Value = //your value; 
    cmd.Parameters.Add(myParam); 

    //Add more parameters if applicable... 

    SqlDataReader dr = command.ExecuteReader(); 

    if (dr.HasRows) 
    { 
     while (dr.Read()) 
     { 
      //map to your custom object here by instantiating one and mapping 
      //the SqlDataReader columns to your custom object properties. 
     } 
    } 
} 
Смежные вопросы