首页 > 代码库 > C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串
C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串
为了保持开发效率,以及保持代码优雅,项目中引用了EntityFrame。但是又因为某些报表功能需要大量计算,所以又要求直接使用ADO.NET,调用存储过程进行计算。
于是乎webconfig文件中就会出现两种数据库连接字符串。
<!--EntityFrame--><connectionStrings><add name="GpsDBEntities" connectionString="metadata=res://*/Models.DbModels.XXXX.csdl|res://*/Models.DbModels.XXXX.ssdl|res://*/Models.DbModels.XXXX.msl;provider=System.Data.SqlClient;provider connection string="data source=XXXXX;initial catalog=XXXXX;persist security info=True;user id=XXXX;password=XXXXX;MultipleActiveResultSets=True;App=EntityFramework""providerName="System.Data.EntityClient" /></connectionStrings><!--ADO.NET--><add key="sqlConnectionString" value="server=XXXXX;uid=XXXXX;pwd=XXXX;database=XXXX"></add>
可以这样写又显得累赘,为什么同一个数据库,我要写两次连接字符串。
于是想只保留ADO.NET的数据库连接字符串,在使用EntityFrame的时候,生产EntityFrame专用的数据库连接字符串进行连接。
因此我构建了一个工具类,用来生成EntityFrame的数据库连接字符串。
public sealed class DBConnectionUtil{ private static string IP { get; set; } private static string UserId { get; set; } private static string Password { get; set; } private static string DBName { get; set; } public static string EntityConnectionStr { get; set; } public static readonly DBConnectionUtil instance = new DBConnectionUtil(); private DBConnectionUtil() { GetDBSetting(); } private void GetDBSetting(){ var connectStr = ConfigurationManager.AppSettings["sqlConnectionString"]; var settingArray = connectStr.Split(‘;‘); foreach (var setting in settingArray) { var keyVal = setting.Split(‘=‘); switch (keyVal[0]) { case "server": IP = keyVal[1]; break; case "uid": UserId = keyVal[1]; break; case "pwd": Password = keyVal[1]; break; case "database": DBName = keyVal[1]; break; } } EntityConnectionStr = "metadata=res://*/Models.DbModels.GpsDB.csdl|res://*/Models.DbModels.GpsDB.ssdl|res://*/Models.DbModels.GpsDB.msl;provider=System.Data.SqlClient;provider connection string=\"data source=" + IP + ";initial catalog=" + DBName + ";persist security info=True;user id=" + UserId + ";password=" + Password + ";MultipleActiveResultSets=True;App=EntityFramework\""; }}
然后在使用时直接调用即可。
public partial class XXXXX : DbContext{ public XXXXX() : base(DBConnectionUtil.EntityConnectionStr) { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); }}
C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。