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

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

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

Ответы [ 3 ]

23 голосов
/ 06 февраля 2009

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

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

1 голос
/ 06 февраля 2009

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

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

Я ходил с System.Data.EntityClient.EntityConnection.

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

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

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

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

1 голос
/ 06 февраля 2009

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

...