2016-11-08 1 views
0

Ich habe einen linq-Ausdruck, den ich in eine Stored-Prozedur ändern muss. Dieser linq-Ausdruck gibt ein definiertes Objekt aus der dbml (einer Tabelle) zurück.Rückgabeobjekt von gespeicherter Prozedur in Linq

Die Sache ist, dass, wenn ich meine gespeicherte Prozedur (sagen wir SP_test) aufrufen, es ein SP_testResult Array zurückgibt, und ich möchte, dass es eine definierte Tabelle als ein Objekt zurückgibt.

Wenn ich den Rückgabetyp des SP in der dbml ändern, wenn ich das Ergebnis überprüfen, gibt es nichts zurück, aber wenn ich den SP selbst ausführen, gibt es eine Menge zurück.

Gibt es eine Möglichkeit, die Art der Rücksendung zu definieren? sagen, dass SP_test ein Client-Objekt zurückgibt? (das ist eine Tabelle in meinem dbml-Modell) oder sollte ich das SP_testResult in ein Client-Objekt mappen?

Ich möchte von diesem gehen:

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); 

Um dies:

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

In beiden Fällen this.bookings ist ein Array von Buchungen Klasse.

+0

Bitte zeigen Sie Ihren Code. – sr28

+0

Wo ist das codE? ! – mybirthname

+0

Entschuldigung, ich habe den Code –

Antwort

0

betrachten Vielleicht so etwas wie dies tun, um Ihre SP Ergebnisse ihres Objektes Karte:

//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. 
     } 
    } 
} 
Verwandte Themen