Mariusz Miziolek 1 Napisano 12 Września 2020 Udostępnij Napisano 12 Września 2020 w EntityFramework + Sfera Nexo (edytowane) W jednym z dodatków wykorzystujących w chwili obecnej SfereGT do połączeń z zewnętrzną bazą danych wykorzystujemy EntityFramework w wersji 6. Klient zasugerował migrację całości swojej infrastruktury do nowej wersji Insert Nexo, priorytetem dla niego jest wykorzystywanie dodatku który został dla niego napisany. Zgodnie z zaleceniami został rozpoczęty proces migracji do Nexo ale tu napotkaliśmy problem w chwili dodanie referencji wymaganych w dokumentacji InsERT.Mox.EntityFramework.Core.dll InsERT.Mox.EntityFrameworkSupport.dll InsERT.Mox.UIFramework.dll Pojawia się problem zdublowania biblioteki: Severity Code Description Project File Line Suppression State Error CS0433 The type 'DbContext' exists in both 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'InsERT.Mox.EntityFramework.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=574d892b577c05ec' Nexo C:\GITHUB\Nexo\Nexo\Nexo\DBContext.cs 16 Active Próba wykorzystania InsERT.Mox.EntityFramework.Core.dll bez dodatkowej referencji do EntityFramework również zakończyła się nie powodzeniem. Proszę o podpowiedź jak rozwiązać problem. AKTUALIZACJA: Po kilku próbach udało się rozwiązać powyższy problem za pośrednictwem alliasów. Referencji EntityFramework nadany został dodatkowy alias i błąd został rozwiązany. Dla kolejnych którzy będą mieli podobny problem: I dodanie w inicjalizacji modelu danych extern alias entityFrameworkMain; i później using entityFrameworkMain.System.Data.Entity; using entityFrameworkMain.System.Data.Entity.Infrastructure; Powyższe rozwiązuje problem zdublowania referencji do EntityFramework, przy próbie zbudowania i uruchomienia pojawią się nowy błąd mimo aliasu biblioteki Sfery celują nie na to rozszerzenie co powinny: Microsoft.Practices.Unity.ResolutionFailedException HResult=0x80131500 Message=Resolution of the dependency failed, type = "System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace", name = "(none)". Exception occurred while: while resolving. Exception is: ResolutionFailedException - Resolution of the dependency failed, type = "System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace", name = "InsERT.Moria.ModelDanych". Exception occurred while: while resolving. Exception is: AggregateException - Wystąpił przynajmniej jeden błąd. ----------------------------------------------- At the time of the exception, the container was: Resolving System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace,InsERT.Moria.ModelDanych ----------------------------------------------- At the time of the exception, the container was: Resolving System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace,(none) Source=Microsoft.Practices.Unity StackTrace: at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) at Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, ResolverOverride[] overrides) at InsERT.Moria.Sfera.MenedzerPolaczen.<>c__DisplayClass2_0.<Konfiguruj>b__1() at InsERT.Mox.Helpers.AdvancedStopwatch.Measure[T](Func`1 action, String title, Boolean supressTrace) at InsERT.Moria.Sfera.MenedzerPolaczen.<>c__DisplayClass2_0.<Konfiguruj>b__0(Object <p0>) at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() I nner Exception 1: ResolutionFailedException: Resolution of the dependency failed, type = "System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace", name = "InsERT.Moria.ModelDanych". Exception occurred while: while resolving. Exception is: AggregateException - Wystąpił przynajmniej jeden błąd. ----------------------------------------------- At the time of the exception, the container was: Resolving System.Data.Entity.Core.Metadata.Edm.MetadataWorkspace,InsERT.Moria.ModelDanych Inner Exception 2: AggregateException: Wystąpił przynajmniej jeden błąd. Inner Exception 3: TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 'System.Data.Entity.Config.DbConfigurationManager'. Inner Exception 4: TypeInitializationException: Inicjator typów zgłosił wyjątek dla typu 'System.Data.Entity.Internal.AppConfig'. Inner Exception 5: InvalidCastException: Nie można zrzutować [A]System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection na System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection. Typ A pochodzi od EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 w kontekście Default w lokalizacji C:\GITHUB\Nexo\Nexo\Nexo\bin\Debug\EntityFramework.dll. Typ B pochodzi od InsERT.Mox.EntityFramework.Core, Version=6.0.0.0, Culture=neutral, PublicKeyToken=574d892b577c05ec w kontekście Default w lokalizacji C:\GITHUB\Nexo\Nexo\Nexo\bin\Debug\InsERT.Mox.EntityFramework.Core.dll. Proszę o sugestię. Edytowane 12 Września 2020 przez Mariusz Miziolek 1 Link to postu
Katarzyna Rozmarynowska 170 Napisano 14 Września 2020 Udostępnij Napisano 14 Września 2020 w EntityFramework + Sfera Nexo Dnia 12.09.2020 o 15:42, Mariusz Miziolek napisał: Próba wykorzystania InsERT.Mox.EntityFramework.Core.dll bez dodatkowej referencji do EntityFramework również zakończyła się nie powodzeniem. Czy może Pan opisać, jak wyglądało to niepowodzenie? Korzystanie z InsERT.Mox.EntityFramework.Core.dll bez referencji do EntityFramework jest możliwe. Jeśli w projekcie była ta referencja do EntityFramework i została usunięta, to proszę się upewnić, że w pliku App.config nie ma sekcji konfiguracji o nazwie "entityframework". Jeśli tam jest, to można ją usunąć lub zakomentować i spróbować jeszcze raz. Jeśli to nie zda egzaminu i zależy Panu na tym, żeby naprawdę załadować do jednej aplikacji dwie wersje EF, to można jeszcze spróbować zmian konfiguracji opisanych tutaj albo ładowania jednej z wersji biblioteki w osobnej domenie aplikacyjnej. 1 Link to postu
Mariusz Miziolek 1 Napisano 14 Września 2020 Autor Udostępnij Napisano 14 Września 2020 w EntityFramework + Sfera Nexo 5 godzin temu, Katarzyna Rozmarynowska napisał: App.config nie ma sekcji konfiguracji o nazwie "entityframework". Jeśli tam jest, to można ją usunąć lub zakomentować i spróbować jeszcze raz. Odziwo pierwsze podejście było w tym kierunku, niestety zgłaszany przez Visual Studio nie sugerował że pozostał dodatkowy wpis w konfiguracji. Podsumowując, najprostsze rozwiązanie jest najlepsze, ponowne sprawdzenie pliku konfiguracyjnego App.config i teraz wszystko działa jak należy bez dodatkowej referencji do EntityFramework-a. Dziękuję za podpowiedź i sugestię, problem rozwiązany. Link to postu
Polecane posty