Am încheiat recent un proiect având interacțiunea cu o bază de date SQL Server prin Entity Framework (EF) 6.3, elemente care nu puteau fi supuse modificării. Nu că ar fi ceva rău, nu că as avea ceva de obiectat, dar este important de menționat pentru restul povestirii.
Pe lângă legătura standard dintre entități și tabele (sau view-uri) din baza de date, am fost nevoit să folosesc și interogări construite, folosind, Database.SqlQuery<TSmuff>(), pe baza unor funcții SQL ce returnează date tabelare, dar cu parametri ceva mai… deosebiți – TVP, adică Table Valued Parameters.
Acest fapt necesită crearea explicită a unor instanțe de DbParameter; nu pot fi transmise pur și simplu valorile, fapt ce-ar lăsa-n sarcina EF crearea instanțelor de DbParameter atunci când este momentul. Și, ca o restricție suplimentară: Database.SqlQuery<>() acceptă drept argumente ori doar valori, ori doar instanțe de DbParameter; nu poți să le combini.