I'm currently working on a LINQ provider for the VS2008 SP1 beta. There are a few hurdles to overcome, but when its finished, it'll be really nice.
Before I talk about the progress, let me talk about EdmGen -- the tool that Linq uses to generate the schema from a database.
EdmGen uses a provider schema manifest to collect schema information about a database in order to gen the csdl, ssdl, etc. This schema manifest is designed around the idea that one can call SQL queries to collect schema information. This is not the case with SQLite to the extent required by the tool. Instead, the heavy-duty schema information requires a lot of programmatic interference to generate. EdmGen and LINQ in general is not very flexible on this. As a matter of fact, EdmGen uses LINQ calls to combine the queries in the schema definition with outer queries to get the schema -- so not having the schema queryable is going to be a crippler for many database engines.
So my tasks are ...
-
Figure out a way to make EdmGen work with SQLite
-
Write up, and rig up all the schema mapping queries so EdmGen can get schema information
-
Write the Sql Generation code and modify it for SQLite
-
Make whatever design changes are needed in the core library to allow for Linq to work, while still targeting .NET 2.0.
-
Rig up all the datatypes and mapping schemas.
I'm currently on step 5 and hitting some roadblocks due to the lack of documentation on the new bits in LINQ. I've actually gotten as far as having EdmGen actually generate all the files for my SQLite Northwind database -- but it throws lots of type mapping warnings that I need to sort out. Once those are taken care of, I will then have to go back and make sure the rest of the schemas are working and that LINQ has properly mapped and related all the tables to one another properly.
So basically I'm looking at another 20-30hrs worth of work.