创建EF模型后,自动生成的connectionString如下:

<add name="TravelPPEntities" connectionString="metadata=res://*/TravelPP.csdl|res://*/TravelPP.ssdl|res://*/TravelPP.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=192.168.10.27;initial catalog=TravelPP1;persist security info=True;user id=sa;password=En7Jw5Xh;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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连接串的更多相关文章

  1. FIREDAC FDConnection 连接池 连接串

    一.FDConnection 连接池 http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic ...

  2. 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理

    文章更新历史 2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题. 开篇介绍 这篇文章主要总结在 SSIS 中访问和处理 Excel 数据 ...

  3. kettle_Spoon 修改共享DB连接带汉字引发的错误

    win10下: kettle_Spoon 修改共享DB连接带汉字引发的错误: Unexpected problem reading shared objects from XML file : nul ...

  4. oracle连接串的一种写法

    我在.NET项目里访问oracle,向来是规规矩矩地这样写: DATA SOURCE=PDBGZFBC;PASSWORD=test;PERSIST SECURITY INFO=True;USER ID ...

  5. Oracle可插拔数据库的jdbc连接串写法

    我在服务器上部署某个第三方系统的数据库的时候,服务器数据库版本为oracle 12c.我采用的方式是新建了一个实例.访问正常. 后来项目的负责人告诉我,oracle12C支持所谓的可插拔数据库.可插拔 ...

  6. Excel的 OleDb 连接串的格式

    Excel的 OleDb 连接串的格式(Provider=Microsoft.ACE.OLEDB)(2012-08-02 13:04:20) string strCon = "Provide ...

  7. oracle与SqlServer连接串服务器地址

    SQLSERVER数据库可在连接串中指定服务器: ORACLE在监听中指定服务器地址.

  8. 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 ...

  9. 利用python list 完成最简单的DB连接池

    先来看查看效果: 在代码连接数据库后,并且执行三条sql后,将mysql直接重启掉,故我们的连接池连接均是不ok的,所以,它会全部删除再抓新的连接下来,重启mysql命令: 关于python代码: # ...

随机推荐

  1. 使用TFS 自动编译时的一点设置

    MSBuild参数:  /p:VisualStudioVersion=10.0 指定使用的VS编译版本

  2. [转]SQL Server表锁定原理以及如何解除锁定

    2010年10月13日 12:46 来源:部松昌的博客 作者:部松昌 编辑:胡铭娅 一: 下面以AdventureWorks2008为示例数据库做简要的说明,过滤掉一般的数据库的共享锁, 作为示例必须 ...

  3. Android WebView 重定向问题

    webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(Web ...

  4. 有一种感动叫ACM(记陈立杰在成都赛区开幕式上的讲话)

    各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我跟ACM之间的缘分,大概在很早的时候就已经 ...

  5. javascript中array常用属性方法

    属性: length 表示一个无符号 32-bit 整数,返回一个数组中的元素个数. 截短数组..截短至长度2  则:   .length = 2 方法: Array.from() 方法可以将一个类数 ...

  6. poj 2482 Stars in Your Window (线段树:区间更新)

    题目链接:http://poj.org/problem?id=2482 读完题干不免有些心酸(

  7. 基于AutoCAD的ObjectARX之NET扩展(mcnetarx)-AcdbEntMake

    1.创建一个结果缓冲区. 2.调用AcdbEntMake创建对象. 示例: ' 创建文字实体 Dim rb As ResultBuffer = New ResultBuffer rb.Add(New ...

  8. 工作随笔——Swift中的Range和一些字符操作

    截取字符串在Swift中相比OC要复杂很多,主要原因可能还是OC的NSRange的创建方法中参数类型为int,而Swift却对类型要求很严格,int不能作为参数创建Range,这要使用String中的 ...

  9. day13---堡垒机

    1.业务需求 兼顾业务安全目标与用户体验,堡垒机部署后,不应使用户访问业务系统的访问变的复杂,否则工作将很难推进,因为没人喜欢改变现状,尤其是改变后生活变得更艰难 保证堡垒机稳定安全运行, 没有100 ...

  10. eclipseMARS2.0使用可视化设计界面——配置window builder

    1.查看eclipse版本 不同版本的eclipse对应不同的版本window builder,如果不知道版本的话可以通过,点击HELP——>about eclipse来查看自己eclipse的 ...