¿Puede editar esta en el dbml? Personalmente, tiendo a tratar los tipos generados automáticamente (de funciones y procedimientos almacenados) como dtos que son locales a la DAL, así que inmediatamente re-mapa para mi propia representación POCO - es decir
var qry = from row in ctx.SomeProc(12345)
select new Foo {ID = row.ID, Name = row.Name };
etc. Re la segunda pregunta "Además, ¿cómo se puede realizar una consulta de linq en el conjunto de resultados del procedimiento almacenado?" - Yo recomiendo usar una UDF en lugar de un procedimiento almacenado si se quiere componer: esto le permite hacer la composición en la base de datos, por ejemplo, paginación y filtrado:
var qry = (from row in ctx.SomeFunction(12345)
where row.IsActive
select row).Skip(10).Take(10);
la que debe (en LINQ-a -SQL al menos) hacer todo en TSQL en el servidor. De lo contrario, puede llamar AsEnumerable()
y utilizar LINQ a objetos en la capa de .NET llamando:
var qry = (from row in ctx.SomeProc(12345).AsEnumerable()
where row.IsActive
select row).Skip(10).Take(10);
Para editar el dbml (que es sólo xml), cambia el ElementType/@Name
aquí:
<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>
Un artículo útil: http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html –