I heard reasoning about it, and I was curious if others think of it as a best practice / good idea.
One of the reasons is that limiting restrictions on direct access to database tables and forcing applications / users to use SP (stored procedures) to perform CRUD operations will allow database administrators
- fine-grained control to approve / review SP before moving them into production
- avoid random requests written by developers that may cause problems with loading the server / other servers.
This means that the developer cannot write Linq queries to tables (although Linq queries involving SP are possible). It also means that the developer must forget about compile-time checks and also have full control over the data, and primarily use a different language (SQL) to work with data.
I do not mind this, and I do not think this is a great idea. I'm just curious to know what others think. What are the other advantages and disadvantages of this approach.
Update . As mentioned by Thomas in his answer , I tend to think that SPs are logical and use "database programming in SQL," making the logic in order, if not "business logic." Business logic requires separation, compile-time verification and integration checkpoints and what not.