分离EF connectionString里的db连接串
创建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节点增加:
<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
分离EF connectionString里的db连接串的更多相关文章
- FIREDAC FDConnection 连接池 连接串
一.FDConnection 连接池 http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic ...
- 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理
文章更新历史 2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题. 开篇介绍 这篇文章主要总结在 SSIS 中访问和处理 Excel 数据 ...
- kettle_Spoon 修改共享DB连接带汉字引发的错误
win10下: kettle_Spoon 修改共享DB连接带汉字引发的错误: Unexpected problem reading shared objects from XML file : nul ...
- oracle连接串的一种写法
我在.NET项目里访问oracle,向来是规规矩矩地这样写: DATA SOURCE=PDBGZFBC;PASSWORD=test;PERSIST SECURITY INFO=True;USER ID ...
- Oracle可插拔数据库的jdbc连接串写法
我在服务器上部署某个第三方系统的数据库的时候,服务器数据库版本为oracle 12c.我采用的方式是新建了一个实例.访问正常. 后来项目的负责人告诉我,oracle12C支持所谓的可插拔数据库.可插拔 ...
- Excel的 OleDb 连接串的格式
Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)(2012-08-02 13:04:20) string strCon = "Provide ...
- oracle与SqlServer连接串服务器地址
SQLSERVER数据库可在连接串中指定服务器: ORACLE在监听中指定服务器地址.
- oracle 11g odbc连接串及配置
首先先安装HA-Instant Client-v11.2.0.3.0-x86.rar 下载地址: ftp://hhdown:2-2@58.23.131.52/download/HA-Instant%2 ...
- 利用python list 完成最简单的DB连接池
先来看查看效果: 在代码连接数据库后,并且执行三条sql后,将mysql直接重启掉,故我们的连接池连接均是不ok的,所以,它会全部删除再抓新的连接下来,重启mysql命令: 关于python代码: # ...
随机推荐
- delphi XE5皮肤的使用
做皮肤其实是项浩大的工程,从美工设计.到贴图.到程序设计,都非常的麻烦,如果不是一个非常成熟的产品且有很大的用户群体,并且公司具有相当实力,一般都不会去自己做皮肤,毕竟涉及的东西太多,一旦出现问题 ...
- 如何使用yum下载rpm包
一.使用 yum-downloadonly 插件 参考文章:ghosTzone 的博客http://ghostm55.is-programmer.com/posts/6422.html yum是一个优 ...
- Win7 64位 VS2015环境编译NanoVG
书接上回,Cairo编译好使用后,发现简单的每帧画100条随机线段就卡得不行,装了个gooreplacer( http://liujiacai.net/gooreplacer/ )上stackover ...
- 解决Get请求的长度限制
错误提示: HTTP Error 404.15 - Not Found The request filtering module is configured to deny a request whe ...
- Ubuntu系统网卡IP配置方法
主要文件为:/etc/network/interfaces 在没有任何配置的情况下,其内容为以下两行: auto loiface lo inet loopback 配置网口为动态获取IP的,在末尾加上 ...
- 自话自说——POI使用需要注意一个地方
2015.12.1 天气 不怎么好 心情跟天气一样.知道为什么吗,因为昨晚一晚没睡你懂吗... 今天在用POI操作excel的时候,遇到了一个很恶心的地方,这个地方真的有那种让我不相信编程的感觉 ...
- 「2014-2-8」Reading a blog on the pain points of Global Variables of C language
晚上读到一篇<C 语言全局变量那些事儿>.我先前对链接的理解不深,算是涨了一番姿势.此文吐槽的重点,是「非 static 限定的全局变量」带来的看似出人意料(实则可以被合理解释)的行为.虽 ...
- Python基于pandas的数据处理(二)
14 抽样 df.sample(10, replace = True) df.sample(3) df.sample(frac = 0.5) # 按比例抽样 df.sample(frac = 10, ...
- IOS Alcatraz Xcode6.4安装指南
1.Alcatraz Alcatraz是Xcode上的插件管理器,用过notepad++应该印象深刻,近来在一部新机器 按以前的安装方法安装老是安装不成功.特意查找了下资料,最后安装成功. 2.安装过 ...
- 安卓Notification的setLatestEventInfo is undefined出错不存在的解决
用最新版的SDK,在做状态栏通知时,使用了Notification的setLatestEventInfo(),结果提示: The method setLatestEventInfo(Context, ...