Best portable DB engine that supports Linq - linq-to-sql

I need to know what is the best portable db, for this situation
I've an application base on sql server db, we use both LINQ TO SQL, and ADO.NET, in this application.
Now we need to make a portable version of it, but the fact we are using Linq To Sql, preventing us from using MS Access, as there is not out of the box solution for that (other than some 3rd parties, and we don't want to use them).
So I need to a db engine that is:
Portable
Have Linq support.
if it is not completely portable, is there is a one that can be easily attached & deattached, from client PC.

Did you check out SQL Compact Edition?
Downloadable for free and a list of reasons why to use it
It seems the latest and greatest version (4) does not support LINQ-to-SQL, but the previous version (3.5) does.

Check this code project article: LinqToSQL: Comprehensive Support for SQLite, Microsoft Access, SQServer2000/2005
Hope this helped.

Related

Experience with direct data access components

I would like to know as to what has been the experience of using direct data access components like devart's MyDAC which allows a direct connection to the mysql server rather than through the client library or ODBC.
With AnyDAC you can acess almost all popular databases (MySQL, SQL Server, Oracle, Firebird, PostgreSQL, DB2, SQLite, ...). High-speed native direct access, many unique futures, unified API for access to cross-database features, excelent support.
I've never used MyDAC before. My experience is with DAC for MySQL from http://www.microolap.com/.
So far so good. Pretty easy to drop onto my Delphi projects, set the values of various properties, and then ready to connect. It has quite a number of useful components that allows you to retrieve data in several ways and you can use it easily with TDataSource.
No issues with deployment as well. All compiled nicely into one EXE.
Hope this helps!
Mydac is the best when you try to connect to MySql, it's fast stable and real powerful components.
Also the same for other components like Sdac and Odac.
and if you would like to use more than database you can use Unidac, which you can use to connect to (oracle, Sql server, Mysql, Interbase, Firebird and ODBC drivers.).
Another great point for Devart components that you don't need client library to be installed on the clients machine (libmysql.dll).

Using LINQ with databases other than SQL Server Express 2005

I'm just starting to look into using LINQ for my database (and XML, and data object!) needs, but need to decide on which database to go with. I've been reading Pro LINQ, and it says that currently, LINQ in .NET 3.5 only supports SQL Server. I have done some googling, and have found references to using LINQ with MySQL and PostgreSQL (my other two DB options), but they are refer to DLinq, which I understand to be the predecessor of LINQ to DB.
I've read interesting and informative comparisons of the three databases here and here, but am still torn. I do not have any in-depth database experience, so it's important to be able to get the software installed and configured easily, or at least be easy to figure out how to compile a list of steps to configure it. I definitely want to have transactional support as well. But most importantly -- I want to use LINQ.
I'd like to hear what everyone here is using, whether it's SQL Server because LINQ supports it natively, or the other two with some additional component for LINQ support that I haven't yet found.
We use devart's dotConnect provider for Linq-to-Oracle and have been very pleased. They try and make the functionality match Linq-to-SQL as close as possible, which seems to be what you're looking for.
They have providers for:
Oracle
MySQL
PostgreSQL
SQLite
SQL Server
From a cost perspective, it's an excellent deal I'd say, just pay for developer seats, no server licensing.

What database vendors does LINQ to SQL support?

I'm kind of new using LINQ to SQL and when ever I try to use a non sql server dbs I get an error that it is an unsupported data provider. Is there a way to get LINQ to work with dbs like Oracle and SQL sdf files?
In order to use LINQ to communicate with a given DB backend, you need to get a DB specific provider. For oracle, try the following project on codeplex
http://www.codeplex.com/LinqToOracle
The DbLinq project supports all of Linq to Sql's features over MySQL, PostgreSQL, Oracle and SQLite, as well as some unique features. It is also the base of Mono's implementation of Linq to Sql.
Not officially, but there are a variety of projects implementing LINQ to SQL for other databases, for example: http://www.codeplex.com/LinqToOracle
Although you specified LINQ to SQL you might also want to consider the Entity Framework which does support different databases. You can find some supported providers here. The first 3 providers on that page support ORACLE.
If you want start a new project that is not SQL Server and you want to use a Microsoft ORM I recommend you to start using Entity Framework which supports MySQL and Oracle and ... and also you can use LINQ to Entity to communicate between your application and EF generated classes.
Hope this helps
Take a look at the Devart LINQ to Oracle tutorial.
But please note that you are not able to mix data from SQL Server and Oracle datacontexts.

Micro-ISV License Costs - .NET Or Open-Source?

I've started developing a website in ASP.NET MVC and have taken part in the BizSpark program. The only part that concerns me is the licensing cost of SQL Server Enterprise after the three year period is up.
Given this cost, and the potential outcome that this product may not 'take off'; should I rewrite the application in a 'free' platform such as Ruby on Rails or Java?
You can use SQL Server Express even in production IIRC. Alternatively, use ASP.NET MVC but with a free database such as Postgres or Mysql.
You're not forced to choose between "everything Microsoft" and "nothing Microsoft".
Why rewriting the app if the problem is SQL server?
You can connect to MySQL from .NET.
Check out this question as well: Why is microsoft stack said to be costly?
Aside from the cost of the Windows Server (which would include IIS) to host, and the cost of SQL Server for the database, .NET itself is essentially free.
The .NET Framework can be downloaded for free, and you can get the Visual Web Developer Express version of the VS development tools also for free.
Also, there's no reason why you have to use SQL Server as the back-end database. MySQL will happily run on top of Windows, and there's ADO.NET providers for it also.
If your database needs aren't huge (ie. you can happily live with a 4GB database size limit), you can even use SQL Server Express freely.
If you're a start-up that meets several conditions (most notably, less than $1 million in revenue) then you probably qualify for the BizSpark program, which basically eliminates the .Net licensing costs.
Any alleged pros and cons of .Net vs Ruby in a general sense are highly subjective. You might find one more suitable to a particular task than another but there is no general "better" or "best".
And obviously startups can (and do) use .Net. Case in point: Stackoverflow.
Microsoft licensing is expensive. And most of the time, I can't even find which license I actually need on the massive, confusing labyrinth that is the Microsoft web site.
Having said that, In my opinion the .NET Framework is a great platform (robust, easy to learn, good dev tools), and I've found the .NET developer community is very supportive.
As some others here have already suggested, you can run Windows Server/IIS and MySQL in conjunction, to get the best of both worlds.
If you are ok with using mysql as a database there is really no need for SQL server...
And if you want to eliminate licensing costs for Windows Server 2008 as well, it should be possible to run asp.net on apache (google it for more info)....

New Project : MySQL or SQL 2005 Express

I am starting a new client/server project at work and I want to start using some of the newer technologies I've been reading about, LINQ and Generics being the main ones. Up until now I have been developing these types of applications with MySQL as clients were unwilling to pay the large licence costs for MSSQL.
I have played around a small amount with the express versions but have never actually developed anything with them. The new application will not have more than 5 concurrent connections but will be needed for daily reporting.
Can MSSQL 2005 express still be downloaded? I cant seem to find it on the microsoft site. I would be hesitant to use MSSQL 2008 on a project so soon after its release.
Are the express version adequate for my needs, I'm sure loads of people reading this have used them. Did you encounter any problems?
The answer to the question on any project in regards to what platform/technologies to use is: What does everyone know best?
Yes express can still be downloaded.
Will it fit your requirements? That depends on your requirements, of course. I have deployed MSSQL2005 Express on several enterprise level projects which I knew had a fixed database size that would never be exceeded (Express has a limit of each database of 4Gb). Also keep in mind there are other hardware constraints such as a 1 cpu limit.
Another thing to consider is if you need the Enterprise level tools that come with a paid edition of SQL Server. If you are moving a lot of flat data around you are stuck writing your own Bulk Copy Procs, which rule the house, but its an extra step, no doubt.
Note sure about #2 but you can download SQL Server Express 2005 here.
Sql express has more features, and is a lot more powerful, but will only run on windows boxes. If you ever need to scale Sql express can be switched easily to a commercial variant.
MySql doesn't support half the features, but does have most of the basic ones you actually need, and will run on windows or *nix boxes. It's also not throttled in the same way as Sql express is.
In my opinion (having used both extensively, but not touched MySql for a few years) Sql express is a far better DB system. If you're building .Net applications the Linq support is a deal clincher.
If you aren't going for pure Sql server support, I wouldn't go for pure MySql support instead. Use a DBFactory design pattern to load your data layer or use simple SQL:92 syntax that's a lowest common denominator.
Why not go to Sql server express 2008?
I'm mostly going to advocate MS SQL Server because of .NET integration. Linq To Sql is pretty much my favorite way to do deal with databases these days: anonymous functions make everything better! My current place of work has also used MSSQL Express for real projects, so you have at least two of us confirming that the restrictions aren't too harsh.
I have about 50 web sites running perl/apache/mysql and about 10 running C#/ASP.Net/SQL Server (Lite) and other (large) applications running on SQL Server (Heavy). I never have problems with SQL Server - it just works. I often have problems with MySQL.
My advice would be to go for the SQL Server based option even if you had to pay for it.