2009-02-27 13 views
6

Jak zmienić nazwę klasy wyniku procedury składowanej wygenerowany przez LINQ na projektanta SQL (oprócz manipulacji z designer.cs)?LINQ do SQL: Zapisane wyniki procedur

Również, w jaki sposób wykonać kwerendę linq na zestawie wynikowym procedury składowanej?

+0

Pomocny artykuł: http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html –

Odpowiedz

7

można edytować ten w dbml? Osobiście staram się traktować rodzaje generowane automatycznie (z funkcji i procedur przechowywanych) jako DTOs które są lokalne dla DAL, więc natychmiast ponownie mapować je do własnej reprezentacji POCO - tj

var qry = from row in ctx.SomeProc(12345) 
      select new Foo {ID = row.ID, Name = row.Name }; 

etc. Na drugie pytanie "Jak również wykonać kwerendę linq na zestawie wynikowym procedury składowanej?" - Polecam za pomocą UDF zamiast procedury przechowywanej, jeśli chcesz go komponować: pozwala wykonać kompozycję w bazie danych, na przykład stronicowania i filtrowanie:

var qry = (from row in ctx.SomeFunction(12345) 
      where row.IsActive 
      select row).Skip(10).Take(10); 

który powinien (w LINQ-do -SQL przynajmniej) rób wszystko w TSQL na serwerze. W przeciwnym razie, można zadzwonić AsEnumerable() i używać LINQ-obiekty w warstwie wywołującego .NET:

var qry = (from row in ctx.SomeProc(12345).AsEnumerable() 
      where row.IsActive 
      select row).Skip(10).Take(10); 

Aby edytować dbml (który jest tylko XML), zmień ElementType/@Name tutaj:

<Function Name="dbo.CustOrderHist" Method="CustOrderHist"> 
    <Parameter Name="CustomerID" Parameter="customerID" Type="System.String" DbType="NChar(5)" /> 
    <ElementType Name="FooBar"> <!-- ********** HERE ************ --> 
     <Column Name="ProductName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="false" /> 
     <Column Name="Total" Type="System.Int32" DbType="Int" CanBeNull="true" /> 
    </ElementType> 
</Function> 
+0

Ah! prawo - brakowało mi "wybierz wiersz"; naprawiono –

+0

DOH! Czy wiesz, co naprawdę pomaga w pracy z LINQ? przy użyciu System.Linq; –

2

Ponadto, w jaki sposób można wykonać kwerendy LINQ na zestaw wyników procedury przechowywanej ?

var query = from results in datacontext.storedprocedurename() 
      where results.whatever == 1 
      select results; 
Powiązane problemy