I am starting off with a SQLServer database. So it would seem that I should use System.Data.SqlClient
namespace. But, there is a chance that we might shut down our SqlServer database and go to MySql or Oracle. For this reason, I am coming up with a set of standards on how our .Net apps will communicate with the database, so as to make it easier to migrate to a different database system in the future if we needed to do so.
So here are the standards:
- Use an ORM if possible (eg NHibernate) (No LINQ as it only supports SqlServer, but what about Entity framework and its support for Oracle and MySql?)
- If ORM is an over-kill, then use parameterized SQL queries.
- Use stored procedures only for long running or complex actions that need to be performed on the database.
Which brings me to my main question at hand. Which namespace should I be using to code my DAL?
It looks to me that the choice is between System.Data.ODBC
and System.Data.OleDB
:
- What are the trade-offs?
- Is one preferred over the other?
- What are your thoughts about the first 3 standards?