¿Cómo usar ADO.net Entity Framework con un SqlConnection existente?

ado.net entity-framework sqlconnection

Pregunta

  1. Tengo un sitio web asp.net existente que utiliza una SqlConnection.
  2. He añadido el Entity Framework de ADO.net.
  3. Me conecté con éxito a la base de datos y creé el archivo .edmx.
  4. Puedo conectarme a través de Entity Framework con la cadena de conexión que se genera automáticamente.

Quiero usar el objeto SqlConnection existente que uso en todo el sitio para la conexión de Entity Framework.
No quiero tener que usar una segunda conexión de base de datos para la única página que usará el Entity Framework de ADO.net y no quiero cambiar todo el sitio para usar la nueva cadena de conexión del Entity Framework.

Gracias por cualquier ayuda que usted nos pueda proporcionar.

Respuesta aceptada

Esa publicación del foro tiene la respuesta:

MetadataWorkspace workspace = new MetadataWorkspace(
  new string[] { "res://*/" }, 
  new Assembly[] { Assembly.GetExecutingAssembly() });

using (SqlConnection sqlConnection = new SqlConnection(connectionString))
using (EntityConnection entityConnection = new EntityConnection(workspace, sqlConnection))
using (NorthwindEntities context = new NorthwindEntities(entityConnection))
{
  foreach (var product in context.Products)
  {
    Console.WriteLine(product.ProductName);
  }
}

"res: // * /" es la parte de su cadena de conexión EF que describe la ubicación de sus archivos de mapeo xml, en este caso, los recursos incrustados en el ensamblaje actual.


Respuesta popular

Andrew Peters,

Gracias por su respuesta.

He estado dando vueltas y vueltas con System.Data.EntityClient.EntityConnection.

Está justo al alcance de la mano, pero parece que no consigo que el parámetro MetadataWorkspace funcione.

Este es el ejemplo más cercano que he encontrado (el post marcado como Respuesta):

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/dd7b1c41-e428-4e29-ab83-448d3f529ba4/

Gracias por cualquier ayuda.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow