Подтвердить что ты не робот

Как использовать ADO.net Entity Framework с существующим SqlConnection?

  • У меня есть существующий сайт asp.net, который использует SqlConnection.
  • Я добавил структуру Entity Framework ADO.net.
  • Я успешно подключился к базе данных и создал файл .edmx.
  • Я могу подключиться через Entity Framework с автоматически создаваемой строкой соединения.

Я хочу использовать существующий объект SqlConnection, который я использую на всем сайте для подключения Entity Framework.
Я не хочу использовать второе соединение с базой данных для одной страницы, которая будет использовать ADO.net Entity Framework, и я не хочу изменять весь сайт, чтобы использовать новую строку подключения Entity Framework.

Спасибо за любую помощь, которую вы можете предоставить.

4b9b3361

Ответ 1

У этого сообщения форума есть ответ:

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://*/" является частью вашей строки подключения EF, которая описывает расположение ваших файлов сопоставления xml - в этом случае встроенные ресурсы в текущей сборке.

Ответ 2

Вы можете сделать это, используя конструктор вашего сгенерированного объекта ObjectContext, который принимает EntityConnection. Когда вы создаете EntityConnection, вы передаете свой SqlConnection.

Ответ 3

Эндрю Петерс,

Спасибо за ваш ответ.

Я общаюсь с System.Data.EntityClient.EntityConnection.

Он находится прямо у меня на кончиках пальцев, но я не могу заставить параметр MetadataWorkspace работать.

Это самый близкий пример, который я нашел (сообщение с пометкой "Ответ" ):

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

Спасибо за любую помощь.