.NET EF6实现适配多种数据库
1.配置文件中添加数据库信息
<add key="DBType" value="MySQL"/> <add key="DataSource" value="."/> <add key="DB" value=""/> <add key="User" value=""/> <add key="Pwd" value=""/>
2.动态获取数据库信息
public class DBconfig { private static readonly string dbType = System.Configuration.ConfigurationManager.AppSettings["DBType"]; private static readonly string dataSource = System.Configuration.ConfigurationManager.AppSettings["DataSource"]; private static readonly string db = System.Configuration.ConfigurationManager.AppSettings["DB"]; private static readonly string user = System.Configuration.ConfigurationManager.AppSettings["User"]; private static readonly string pwd = System.Configuration.ConfigurationManager.AppSettings["Pwd"]; public static DbConnection GetConn() { if (dbType=="SQLServer") { System.Data.SqlClient.SqlConnectionStringBuilder sqlBuilder = new System.Data.SqlClient.SqlConnectionStringBuilder(); sqlBuilder.DataSource = dataSource; sqlBuilder.InitialCatalog = db; sqlBuilder.UserID = user; sqlBuilder.Password = pwd; sqlBuilder.PersistSecurityInfo = true; sqlBuilder.IntegratedSecurity = true; return new SqlConnection(sqlBuilder.ToString()); } else if(dbType=="MySQL") { MySql.Data.MySqlClient.MySqlConnectionStringBuilder sqlBuilder = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder(); sqlBuilder.Server = dataSource; sqlBuilder.Database = db; sqlBuilder.UserID = user; sqlBuilder.Password = pwd; return new MySqlConnection(sqlBuilder.ToString()); } return null; }
3.重写DbContext子类的构造函数
public Entities() : base(DBconfig.GetConn(), true) { }