Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

UDT als Parameter in der EF4-Abfrage

Ich denke, Sie haben Ihre Frage größtenteils beantwortet. Die Berechnung muss auf dem Datenbankserver durchgeführt werden, und Sie möchten nur ein Ergebnis erhalten, nicht wahr? Wenn Sie SQL Server 2008 verwenden, können Sie eine gespeicherte Prozedur erstellen, die table valued parameter akzeptiert . Jetzt können Sie diese Prozedur entweder direkt über ADO.NET aufrufen oder mit EF und context.ExecuteStoreQuery wo Sie noch DataTable übergeben zu SqlParameter mit SqlDbType.Structured .

Wenn Sie SQL Server 2008 nicht verwenden, benötigen Sie eine gespeicherte Prozedur mit einem großen nvarchar-Parameter, der die gesamte Liste als durch Kommas getrennte Zeichenfolge übergibt. Ihre gespeicherte Prozedur wird zuerst diese Liste parsen in eine temporäre Tabelle und verarbeiten Sie dann die Berechnung auf die gleiche Weise wie mit Tabellenwertparametern.