SQL Server
My adventures in the SQL Server world
Recentemente ho avuto la necessità di intercettare e manipolare le query generate da Entity Framework.
In particolare dovevo assicurarmi che non venissero estratte dal database le entità la cui proprietà Disabled fosse true (cancellazione logica).
Dalla versione 6 è possibile innestarsi nella pipeline di EntityFramework ereditando dalla classe DefaultExpressionVisitor ed eseguento l'override del metodo Visit, che si occupa di generare l'expression tree che poi verrà convertito in SQL.
Sostanzialmente, se il tipo di entità ha una proprietà Disabled, imposto un filtro verificando che non sia uguale a true.
Per iniettare questo comportamento nella pipeline, basta implementare l'interfaccia IDbCommandTreeInterceptor e...
Recentemente mi è tornato utile avere l’elenco delle transazioni attive con il relativo statemente T-SQL. Ecco la query che ho utilizzato: SELECT s_tst.[session_id], s_es.[login_name] AS [Login Name], DB_NAME (s_tdt.database_id) AS [Database], s_tdt.[database_transaction_begin_time] AS [Begin Time], s_tdt.[database_transaction_log_record_count] AS [Log Records], s_tdt.[database_transaction_log_bytes_used] AS [Log Bytes], s_tdt.[database_transaction_log_bytes_reserved] AS [Log Rsvd], ...