I want a light-weight database engine for any desktop application. The applying isn't data centric, even though it needs some persistent data. Which can you use MS SQL Server express edition or SQLite?

EDIT

Is SQL Server Compact edition free? If it's the situation, how about SQLite versus SQL Server Compact edition to build up this type of application?

If you are dealing with C# and Visual Studio simply right-click any project and choose "Add Item..." as well as in the dialog choose the "Local database", this can produce a SQL CE (Compact Edition) database. It's the majority of the functionality of SQL Express/Server so far as tables, data types, sights but does not allow saved procs. Additionally, it works together with Linq-to-SQL therefore it is easy to integrate.

Certainly NOT Sql Server Express. This is a server class engine. You would like an in-process engine. For the reason that regard, SQLite is okay. Same with Sql Server Compact Edition. Both of them are free and only ought to be sufficient to your requirements.

Firebird is a common database and offer the latest Microsoft framework

Opt for SQL Server Compact - you're able to use LINQ this way, which is well worth the effort.

While SQLite is definitely an option, you may require an ORM layer, and also the performance gain is going to be minimal / non-existent in comparison to SQL Server.

SQLite, particularly if it's single-user. One computer file and something DLL.

If it is just one user system you need to take a look at MS SQL Server compact edition not Express (see here: http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx )

Compact Edition is definitely an embedable database much like SQLite.

Regrettably I can not create a recommendation in either case.

Some fascination with among the up and comers within the .Internet embedded db world -- VistaDb. The license is a little more limited than Sql Server Compact (liberated to single designers only), nevertheless its one hundredPercent handled DB with xcopy deployment and it has Versus tool integration.

Remember that if you are using SQL CE together with EF, you'll have to generate your personal id key, because SQL CE doesn't support multiple query.

i.e: place -> choose key for that entity -> bad

generate and id key (GUID or something like that else) combine it with your entity after which place -> good

Defo SQL lite, even though it has some limitations/features that you should know of

in case your require is data centric, what you actually need is really a file, if you want transaction (Acidity) your require is (rdbms) database.

Otherwise you will have issues when up scaling.

Whether it's very little data, and you don't have to run complicated queries (although LINQ can), why don't you make use of an XML Dataset? This way it's platform independent (could operate on Linux with Mono) and does not require user to set up extra resource hogging software.

I personally use XML Datasets extensively for programs that need persistent data storage of small quantities of information. Whether it's merely a couple of variables, you may also make use of a configurations file, and it'll be saved either per application or per user based on your options.

Consider overhead for the clients ... SQL Server Express still occupies assets, needs time to work to begin on a reboot and so forth. For a tiny bit of single-user persistent data I'd opt for SQLite. Unless of course you are doing serious binding and so forth you will not need an ORM between you and also it.