I’m calling a update SPROC from my DAL, passing in all(!) fields of the table as parameters. For the biggest table this is a total of 78.
I pass all these parameters, even if maybe just one value changed.
This seems rather inefficent to me and I wondered, how to do it better.
I could define all parameters as optional, and only pass the ones changed, but my DAL does not know which values changed, cause I’m just passing it the model – object.
I could make a select on the table before updateing and compare the values to find out which ones changed but this is probably way to much overhead, also(?)
I’m kinda stuck here … I’m very interested what you think of this.
edit: forgot to mention: I’m using C# (Express Edition) with SQL 2008 (also Express). The DAL I wrote “myself” (using this article).
Its maybe not the latest state of the art way (since its from 2006, “pre-Linq” so to say but Linq works only for local SQL instances in Express anyways) of doing it, but my main goal was learning C#, so I guess this isn’t too bad.
If you can change the DAL (without changes being discarded once the layer is “regenerated” from the new schema when changes are made), i would recomend passing a structure containing the column being changed with values, and a structure kontaing key columns and values for the update.
This can be done using hashtables, and if the schema is known, should be fairly easy to manipulate this in the “new” update function.
If this is an automated DAL, these are some of the drawbacks using DALs