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>
Pomocny artykuł: http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html –