New update is coming - with custom LINQ engine (no longer MS with SQL Server only), and with MySql support.

Oct 11, 2013 at 6:37 PM
Other database providers will follow... Expect it within 2 weeks
Nov 6, 2013 at 8:57 PM
DONE, code pushed. Now with MySql and custom LINQ engine. Some unfinished and temporarily disabled functionality (custom stored procedures for c# LINQ), but most of the things are working better - and faster.
Things to look at:
  1. Caching - ability to cache entire tables and sets of tables. The cache works transparently - you execute DB operations in business logic as usual, but the engine detects queries to cached tables and redirects them to cache. LINQ queries are rewritten to run against cache entities, recompiled and executed against cached lists - in fact, using Linq-to-objects.
  2. Linq queries are compiled (translated) once, and compiled definition is saved in cache, to be reused in subsequent calls. The engine saves parameterized definition of the query, so it is reused if it has identical shape - but not necessarily identical in everything.
  3. Logging - complete, efficient framework for logging all activities. The main feature is that log formatting and writing is transferred to a background thread, so that logging has minimal impact on the application performance. LINQ operations are logged in details, including executed SQL and parameter values; also queries executed in cache are logged. Try turning cache on/off in unit tests and look at log files, look at performance of queries in cache. You can now define log at user level (session.UserContext.Log), and collect all activities for a given user. This is in fact integrated with exception logging. You can define user's Log at some point, but without log writer, so log entries are kept in memories and discarded if everything went OK on web request. But if exception happens, you can retrieve the log contents and write it into error log table, along with exception information.
  4. Custom LINQ engine allowed to remove a lot of silly workaround code I had to use to fight against some oddities and limitations of Linq-2-SQL. The whole thing is much more straightforward and efficient. LINQ engine is based originally on DbLinq project (now abandoned, but still included in Mono distribution). I revised the code considerably, so original code is barely recognizable. Right now the functionality supported is more-less on par with standard MS Linq2Sql features, but having my own LINQ implementation opens possibilities for improvements. Some things I'm thinking about in the near future: support for many2many relationships in linq queries; support for full text search querying, and others.
  5. Notice the blazing speed of execution of database operations. A lot of things have been improved in this area.
To sum it up, a list of Killer features VITA provides:
  • Custom LINQ engine with support of non-MS databases and transparent LINQ queries caching
  • Powerful and transparent data caching
  • Automatic schema updates - database follows c# code
  • Database-first development - generating models from existing database, with ability to customize c# code after generation
  • Authorization framework
    Have a look - it's worth it. VITA had been running for more than a year in production now on a commercial web site and a set of applications.
    Still a lot of areas to improve, and functionality to add, but we'll get there.
    Cheers
    Roman
Jan 8, 2014 at 3:25 PM
Hi, it is great, thanx.

What about another database providers?
For example: SQLite, PostgreSQL.

Regards,
Oleg.
Jan 8, 2014 at 6:14 PM
hi
yes, these are on top of my list. The only thing holding me back - I wanted to cleanup some areas in Linq translator, especially in SqlGen. It is inherited from DbLinq, and relies too much on implicit ToString() conversion of sql parts. This is a bit ugly IMHO, quite inefficient, and already caused some troubles in Sql providers. So in order to avoid extra work in the future I want to fix this part first - this will require refactoring of existing SQL providers, but new providers will be created for already fixed sql builder. It's a bit difficult to give a timeframe for the changes, swamped with stuff right now, but I hope to get to it in the next couple of months.
thanks!
Roman
Feb 6, 2014 at 8:49 PM
PostgreSQL is added!