分离EF connectionString里的db连接串
2016-05-31 14:47
302 查看
创建EF模型后,自动生成的connectionString如下:
<add name="TravelPPEntities" connectionString="metadata=res://*/TravelPP.csdl|res://*/TravelPP.ssdl|res://*/TravelPP.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.10.27;initial catalog=TravelPP1;persist security info=True;user id=sa;password=En7Jw5Xh;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
其中包括db连接串,用户名尤其密码明文显示不安全, 同时,对于像olap这样的项目,太多的connectionString,不利于统一管理db连接串。
可以通过如下方法分离db连接串(有了分离的方法, 利用加密手段来做安全控制就有招儿了):
首先,把上面connectionString里的provider connection string去掉吧, 然后在connectionStrings节点增加:
然后,在用你的上下文时,按如下方式:
然后,就可以做你的crud逻辑了。
需思考:
按照上面的方式,在bll层用DbContext派生类时,每声明一个DbContext派生类对象,还要带上指定ConnectionString的代码 , 这在bll层比较不好。
如下,在构造器里这样初始化ConnectionString可以达到封装的效果,但是,“此代码是根据模板生成的,如果重新生成代码,则将覆盖对此文件的手动更改。”
附:
如下是csdn里有一群程序员在讨论类似EF问题:http://bbs.csdn.net/topics/390398765
<add name="TravelPPEntities" connectionString="metadata=res://*/TravelPP.csdl|res://*/TravelPP.ssdl|res://*/TravelPP.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.10.27;initial catalog=TravelPP1;persist security info=True;user id=sa;password=En7Jw5Xh;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
其中包括db连接串,用户名尤其密码明文显示不安全, 同时,对于像olap这样的项目,太多的connectionString,不利于统一管理db连接串。
可以通过如下方法分离db连接串(有了分离的方法, 利用加密手段来做安全控制就有招儿了):
首先,把上面connectionString里的provider connection string去掉吧, 然后在connectionStrings节点增加:
<connectionStrings> <add name="TravelPPEntities" connectionString="metadata=res://*/TravelPP.csdl|res://*/TravelPP.ssdl|res://*/TravelPP.msl;provider=System.Data.SqlClient;" providerName="System.Data.EntityClient" /> <add name="TravelPPEntitiesConnection" connectionString="data source=192.168.10.27;initial catalog=TravelPP1;user id=sa;password=En7Jw5Xh;persist security info=True;MultipleActiveResultSets=True;App=EntityFramework"/> </connectionStrings>
然后,在用你的上下文时,按如下方式:
TravelPPEntities dbEntities = new TravelPPEntities(); dbEntities.Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["TravelPPEntitiesConnection"].ConnectionString;
然后,就可以做你的crud逻辑了。
需思考:
按照上面的方式,在bll层用DbContext派生类时,每声明一个DbContext派生类对象,还要带上指定ConnectionString的代码 , 这在bll层比较不好。
如下,在构造器里这样初始化ConnectionString可以达到封装的效果,但是,“此代码是根据模板生成的,如果重新生成代码,则将覆盖对此文件的手动更改。”
//------------------------------------------------------------------------------ // <auto-generated> // 此代码是根据模板生成的。 // // 手动更改此文件可能会导致应用程序中发生异常行为。 // 如果重新生成代码,则将覆盖对此文件的手动更改。 // </auto-generated> //------------------------------------------------------------------------------ namespace EF { using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; public partial class TravelPPEntities : DbContext { public TravelPPEntities() : base("name=TravelPPEntities") { this.Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["TravelPPEntitiesConnection"].ConnectionString; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } public DbSet<T_Audit_EntContacts> T_Audit_EntContacts { get; set; } public DbSet<T_Info_Enterprises> T_Info_Enterprises { get; set; } public DbSet<T_Info_Passengers> T_Info_Passengers { get; set; } public DbSet<T_User_Account> T_User_Account { get; set; } public DbSet<T_User_Role> T_User_Role { get; set; } public DbSet<T_User_RoleRelation> T_User_RoleRelation { get; set; } public DbSet<T_Info_BusinessDirectory> T_Info_BusinessDirectory { get; set; } public DbSet<T_Info_SbhCmpRelation> T_Info_SbhCmpRelation { get; set; } public DbSet<T_Info_EnterpriseInterest> T_Info_EnterpriseInterest { get; set; } } }
附:
如下是csdn里有一群程序员在讨论类似EF问题:http://bbs.csdn.net/topics/390398765
相关文章推荐
- 固定电话+手机号码正则表达式
- cocos creator prefab中的label设置容无效的问题
- Android多功能时钟开发案例(基础篇)
- Windows不能在本地计算机启动OracleDBConsoleorcl
- android 设置透明效果
- Web设计师应该收藏的11个网站
- ABAP: Field-Symbols:<FS>用法
- BZOJ3417: Poi2013 Tales of seafaring
- 初始化Imageloader
- Ubuntu设置静态IP的方法
- 团队开发冲刺第二阶段7
- Linux/Unix 桌面趣事:文字模式下的 ASCII 艺术与注释绘画
- java回忆录(2)— 动态代理之JDK的动态代理 Proxy类(1)
- HDU 5715
- plsql develop连接数据库乱码
- PMD相机 和 PrimeSense相机 比较
- shell 两数相减取正值
- iOS中UITableViewCell的重用问题解决方案
- 图片上传即时预览效果
- 致博客园网友