Por qué el # (hashes) en la muestra Dapper

c# dapper

Pregunta

Solo estoy leyendo esta muestra del "manual" de Dapper:

connection.Execute(@"
  set nocount on 
  create table #t(i int) 
  set nocount off 
  insert #t 
  select @a a union all select @b 
  set nocount on 
  drop table #t", new {a=1, b=2 })
   .IsEqualTo(2);

¿Son los # t una sintaxis especial para algo? ¿O solo están allí para confundirme? :)

Respuesta aceptada

Sí, # significa algo importante en TSQL: una tabla llamada foo es permanente, para ese db / schema. Una tabla llamada #foo es una tabla temporal; solo existe para esa conexión , y se elimina cuando la conexión se cierra o se restablece. Una tabla llamada ##foo es una tabla temporal global , y existe en todas partes, pero está destinada a ser temporal. Esto se usa principalmente cuando se cambian los datos a granel.

El uso de #t aquí es para que la tabla solo exista en esa conexión, por lo que podemos volver a ejecutar la prueba trivialmente.

Además, una tabla llamada @foo es una variable de tabla , o un parámetro de valor de tabla , y solo existe para ese comando / sproc.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow