Given the premise:
- There are competent sql programmers (correlary - writing sql queries are not an issue)
- There are competent application developers (correlary - there is simple/strong/flexible architecture for handling connections and simple queries from code)
Why do people use linq to sql?
- There is overhead added to each transaction
- There is strong likelihood of performance loss for moderate-complex calculations (DBs are made for processing sets and calculations and had teams of engineers working out optimization - why mess with this?)
- There is loss of flexibility (if you want to add another ui (non .NET app) or access method, you either have to put the queries back in the db or make a separate data access layer)
- There is loss of security by not having a centralized control of write/update/read on db (for example, a record has changed - if you allow applications to use linq to sql to update, then you cannot prove which application changed it or what instance of an application changed it)
I keep seeing questions about linq to sql and am wondering if I'm missing something.