Можете ли вы отредактировать это в dbml? Лично я склонен рассматривать автоматически сгенерированные типы (из функций и хранимых процедур) как DTO, которые являются локальными для DAL, поэтому я немедленно переназначаю их в свое собственное представление POCO - т.е.
var qry = from row in ctx.SomeProc(12345)
select new Foo {ID = row.ID, Name = row.Name };
и т.д.. По второму вопросу «Кроме того, как вы можете выполнить запрос linq для набора результатов хранимой процедуры?» - Я бы порекомендовал использовать UDF вместо хранимой процедуры, если вы хотите ее составить: это позволяет вам выполнять композицию в базе данных, например, подкачку и фильтрацию:
var qry = (from row in ctx.SomeFunction(12345)
where row.IsActive
select row).Skip(10).Take(10);
который должен (по крайней мере в LINQ-to-SQL) делать все на TSQL на сервере. В противном случае вы можете вызвать AsEnumerable()
и использовать LINQ-to-Objects на вызывающем уровне .NET:
var qry = (from row in ctx.SomeProc(12345).AsEnumerable()
where row.IsActive
select row).Skip(10).Take(10);
Чтобы отредактировать dbml (который является просто xml), измените ElementType/@Name
здесь:
<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>