Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

UDT como parâmetro na consulta EF4


Acho que você respondeu principalmente a sua pergunta. A computação deve ser feita no servidor de banco de dados e você quer apenas obter o resultado, não é? Se você estiver usando o SQL Server 2008, poderá criar um procedimento armazenado que aceite parâmetro com valor de tabela . Agora você pode chamar este procedimento diretamente usando ADO.NET ou usando EF e context.ExecuteStoreQuery onde você ainda passa DataTable para SqlParameter com SqlDbType.Structured .

Se você não usar o SQL Server 2008, precisará de um procedimento armazenado com um grande parâmetro nvarchar passando a lista inteira como uma string delimitada por vírgulas. Seu procedimento armazenado primeiro analisará esta lista para a tabela temporária e, em seguida, processe o cálculo da mesma maneira que com o parâmetro com valor de tabela.