Pregunta

Tengo una aplicación que usa EF CTP5.

En esta situación particular, necesito degradarme a algún ADO.NET clásico (para leer múltiples conjuntos de resultados en un procedimiento almacenado, que EF no es compatible).

Como tal, estoy tratando de usar el cadena de conexión existente desde el EntityConnection Objeto, como este:

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

Cuando debuge, veo que el ConnectionString no contiene la contraseña, solo la fuente de datos, el nombre de usuario, la base de datos, etc.

¿Es esto algo de seguridad por qué lo han eliminado? ¿EF oculta la contraseña en alguna parte y solo la usa cuando ejecuta procedimientos almacenados en sí?

La cadena de conexión EF no es como las cadenas de conexión ADO.NET clásicas, ya que tiene información de metadatos.

Por lo tanto, parece que tendré que eliminar la parte de la cadena de conexión que necesito, ponerla en la web.config y pasarlo al repositorio.

¡Seguramente debe haber una mejor manera!

¿Fue útil?

Solución

Intente agregar "Persist Security Info = True;" a la cadena de conexión de contexto. Esto funcionó para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top