Condividi tramite


Procedura: utilizzare le stored procedure per restituire rowset (LINQ to SQL)

In questo esempio viene restituito un rowset dal database e viene incluso un parametro di input per filtrare il risultato.

Quando si esegue una stored procedure che restituisce un rowset, si utilizza una classe di risultati per l'archiviazione dei valori restituiti dalla stored procedure. Per ulteriori informazioni, vedere Analizzare il codice sorgente di LINQ to SQL.

Esempio

Nell'esempio seguente è rappresentata una stored procedure che restituisce righe di clienti e utilizza un parametro di input per restituire solo le righe in cui è elencata "London" come città del cliente. In questo esempio si presuppone una classe CustomersByCityResult enumerabile.

CREATE PROCEDURE [dbo].[Customers By City]
    (@param1 NVARCHAR(20))
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    SELECT CustomerID, ContactName, CompanyName, City from Customers
        as c where c.City=@param1
END
    <FunctionAttribute(Name:="dbo.Customers By City")> _
        Public Function CustomersByCity(<Parameter(DbType:="NVarChar(20)")> ByVal param1 As String) As ISingleResult(Of CustomersByCityResult)

        Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), param1)
        Return CType(result.ReturnValue, ISingleResult(Of CustomersByCityResult))
    End Function

Sub ReturnRowset()
    ' Call the stored procedure.
    Dim db As New Northwnd("c:\northwnd.mdf")

    Dim result As IEnumerable(Of CustomersByCityResult) = _
        db.CustomersByCity("London")

    For Each cust As CustomersByCityResult In result
        Console.WriteLine("CustID={0}; City={1}", _
            cust.CustomerID, cust.City)
    Next

End Sub
[Function(Name="dbo.Customers By City")]
public ISingleResult<CustomersByCityResult> CustomersByCity([Parameter(DbType="NVarChar(20)")] string param1)
{
    IExecuteResult result = this.ExecuteMethodCall(this,         ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);
    return ((ISingleResult<CustomersByCityResult>)(result.ReturnValue));
}

// Call the stored procedure.
void ReturnRowset()
{
    Northwnd db = new Northwnd(@"c:\northwnd.mdf");

    ISingleResult<CustomersByCityResult> result =
        db.CustomersByCity("London");

    foreach (CustomersByCityResult cust in result)
    {
        Console.WriteLine("CustID={0}; City={1}", cust.CustomerID,
            cust.City);
    }
}

Vedere anche

Concetti

Download dei database di esempio (LINQ to SQL)

Altre risorse

Stored procedure (LINQ to SQL)