views:

69

answers:

1

I'm writing a new .Net 3.5 Winforms single user application and I'm not sure which database I should use. The database consists of about 30 tables and maximum rows in a table will not exceed 50,000.
The database should be password protected so the client user cannot view the structure or modify data manually.
I'd rather prevent further installation on the client machine aside my application's setup. For example I prefer not to use SQL Server Express Edition since it should be installed the client machine. But, that's not a priority.
As far as I know, My choices are SQL Server Compact Edition, SQLite and Microsoft Access. I think using SQL Server Compact edition is the best choice But I'm not sure it would be a good idea since it's written to be used in database apps that will run on mobile devices. But I could be wrong.
I have heard about ODBMS but I have no experience using them and have no idea about performance, flexibility etc.

+3  A: 

Use SQLite. It integrates really well with .NET, requires no installation or maintenance, runs in process with your app, and is very very fast. Supports official SQL syntax and custom functions written in .NET.

Official site:

http://sqlite.org/

Best .NET wrapper:

http://sqlite.phxsoftware.com/

It can be used with Entity Framework and NHibernate but not LLBLGen Pro.

Sam
Can I use common ORMs like EF, SubSonic, NHibernate or LLBLGen Framework with it?
Kamyar
@Kamyar, It can be used with Entity Framework and NHibernate but not LLBLGen Pro.
Sam
@Sam, Thanks! Just checked the SubSonic website (http://www.SubSonicProject.com) They support SQLite too. I guess I'll go with SQLite this time.
Kamyar