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

ado.net entity-framework sqlconnection

Вопрос

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

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

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

Принятый ответ

Это сообщение на форуме имеет ответ:

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 - в этом случае встроенные ресурсы в текущей сборке.


Популярные ответы

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

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

Я ходил по кругу с System.Data.EntityClient.EntityConnection.

Это у меня под рукой, но я не могу заставить работать параметр MetadataWorkspace.

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

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

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



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему