LINQ, the .NET Language Integrated Query project, was an initiative to standardize data access across data sources.
I recently read an article by Arthur Fuller arguing that he was not convinced LINQ would revolutionize database application development. I cannot say I completely agree or disagree with everything in it, but it was an interesting read, and the comments underneath were as interesting as the article, with people arguing hard on both sides.
Like Fuller, I have always been a strong proponent of whatever the back end can do, the back end should do. That has to be judged project by project, but the projects I architect have typically benefited from a separate data layer with stored procedures handling data access. So I came to LINQ with some skepticism.
That said, I do not think LINQ requires moving back end code to the front end. That comes down to how the solution is architected and how the developer chooses to use it. The problem is that with LINQ still so new, almost every code snippet, document, and article uses examples that make it look like all the data access code has to live in the front end. I fell into it myself at first: I dropped a DBML file into the web project and wrote some quick code to test it. Once I saw it worked, I immediately created a Data layer, moved the DBML file there, and carried on. That way the data access layer does what it says, and the front end uses the data rather than fetching it.
One comment on the article summed up what I had been thinking:
LINQ is a tier neutral technology. On the front end one can use LINQ to query returned datasets, XML files etc and on the back end to query a database. IMHO the back end (data access tier) is the only tier that is allowed to access data storage like SQL Server. The front end can manipulate returned data from the back end but not retrieve or update it without using the DAC. LINQ is merely a uniform way of accessing different data sources. New functionality like LINQ does not force bad coding style, that is left up to the creativity of the developer.
So no conclusive agreement has been reached about where LINQ ends up, but I am optimistic and looking forward to learning more about it over the coming months.
Looking back from the present day: LINQ itself stuck around and became a normal part of writing C#. LINQ to SQL, the specific technology I was testing here, was largely superseded by Entity Framework within a few years. The conviction underneath the post did not change, though. I still think the back end should do what the back end can do, which is more or less the argument I was still making in 2026.