为什么EntityConnection对象不包含登录密码?

时间:2011-03-16 03:07:16

标签: sql-server-2008 ado.net connection-string entity-framework-ctp5 entityconnection

我有一个使用EF CTP5的应用程序。

在这种特殊情况下,我需要降级为一些经典的ADO.NET(为了在存储过程中读取多个结果集,EF不支持)。

因此,我试图使用EntityConnection对象中的现有连接字符串,如下所示:

var ctx = (this as IObjectContextAdapter).ObjectContext;
var efCon = ((EntityConnection) (ctx.Connection)).StoreConnection;
var con = new SqlConnection(efCon.ConnectionString);
con.Open(); // exception thrown

当我调试时,我发现ConnectionString不包含密码,只包含数据源,用户名,数据库等。

这是一个安全的东西,为什么他们删除它? EF是否在某处隐藏密码并仅在执行存储过程时使用它?

EF连接字符串与经典ADO.NET连接字符串不同,因为它具有元数据信息。

所以看起来我必须删除我需要的连接字符串部分,将其放在web.config中并将其传递给存储库。

当然必须有更好的方法!

1 个答案:

答案 0 :(得分:6)

尝试添加“Persist Security Info = True;”到上下文连接字符串。这对我有用。