Pytanie Jak korzystać z ADO.net Entity Framework z istniejącym SqlConnection?


  1. Mam istniejącą witrynę asp.net, która używa SqlConnection.
  2. Dodałem ADO.net Entity Framework.
  3. Udało mi się połączyć z bazą danych i utworzyłem plik .edmx.
  4. Jestem w stanie połączyć się za pomocą Entity Framework z łączem, który jest generowany automatycznie.

Chcę użyć istniejącego obiektu SqlConnection, którego używam w witrynie dla połączenia Entity Framework.
Nie chcę używać drugiego połączenia z bazą danych dla jednej strony, która będzie używać ADO.net Entity Framework i nie chcę zmieniać całej witryny, aby używać nowego ciągu połączenia Entity Framework.

Dziękuję za pomoc, którą możesz udzielić.


18
2018-02-05 23:50


pochodzenie




Odpowiedzi:


Ten post na forum ma odpowiedź:

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: // * /" jest częścią ciągu połączenia EF opisującego lokalizację plików odwzorowania XML - w tym przypadku osadzone zasoby w bieżącym złożeniu.


23
2018-02-06 07:00



Dzięki, Teraz dostaję ten błąd: MetadataWorkspace musi mieć wstępnie zarejestrowaną EdmItemCollection. Projekt jest stroną internetową Asp.net z plikiem .edmx. Myślę, że nie pobiera danych z pliku .edmx. - EZ.
Miałem ten sam problem, ale zmieniłeś Assembly.GetExecutingAssembly () na Assembly.GetAssembly (typeof (NorthwindEntities)), więc działało to ładnie. - Hath
Zmiana zestawu na Assembly.GetAssembly (typeof (NorthwindEntities)) nie działa dla mnie. - Kyle


Możesz to zrobić za pomocą konstruktor wygenerowanego obiektu ObjectContext, który akceptuje EntityConnection. Kiedy tworzysz EntityConnection przekazujesz w SqlConnection.


1
2018-02-06 04:06



Przechodzę w kółko z System.Data.EntityClient.EntityConnection. Jest to na wyciągnięcie ręki, ale nie wydaje mi się, żeby parametr MetadataWorkspace działał. - EZ.


Andrew Peters,

Dziękuję za Twoją odpowiedź.

Przechodzę w kółko z System.Data.EntityClient.EntityConnection.

Jest to na wyciągnięcie ręki, ale nie wydaje mi się, żeby parametr MetadataWorkspace działał.

Jest to najbliższy przykład, który znalazłem (post oznaczony jako Odpowiedź):

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

Dzięki za pomoc.


1
2018-02-06 05:54