UWP i połączenie z OracleDB

0

Witajcie,

Chcę się dowiedzieć czy jest jakiś sposób na połączenie się z oracle w uwp?
Aktualnie dodałem Oracle.ManagedDataAccess.Core ale przy tworzeniu obiektu OracleConnection dostaje wyjątek "System.PlatformNotSupportedException: 'Retrieving information about local processes is not supported on this platform.'"

Czy jedynym sposobem jest stworzenie api? Czy może jest jakieś obejście tego problemu?

Pozdrawiam.

0

A aplikację UWP ma na .net Core?
Jeśli nie to spróbuj użyć Oracle.ManagedDataAccess + (ewentualnie) Oracle.ManagedDataAccess.EntityFramework.

0

Jak tak zajrzałem do tej biblioteki, to jest w niej konstruktor public CustomConfigFileReader(bool bIsManaged = false), który wywołuje GetProcessAndEnvInfo(), która robi trochę dziwnych rzeczy:

[SecurityPermission(SecurityAction.Assert, UnmanagedCode=true)]
        private static void GetProcessAndEnvInfo()
        {
            ConfigBaseClass.CurrentProcess = Process.GetCurrentProcess();
            ConfigBaseClass.m_recoveryServiceHost = Environment.MachineName;
            if (string.Compare(ConfigBaseClass.CurrentProcess.ProcessName, "DOTNET", true) != 0)
            {
                ConfigBaseClass.ApplicationName = ConfigBaseClass.CurrentProcess.ProcessName;
                ConfigBaseClass.CoreRunTimeExt = "exe";
                return;
            }
            ConfigBaseClass.ApplicationName = Assembly.GetEntryAssembly().GetName().Name;
            ConfigBaseClass.CoreRunTimeExt = "dll";
        }

Biblioteka nie wykorzystuje tego potem do niczego super istotnego - głównie do nazywania różnych rzeczy, albo znalezienia ścieżki zapisu pliku śledzenia - a przynajmniej tak by wynikało z mojego pobieżnego przeszukania.

Tutaj najpewniej jest rzucany ten wyjątek, bo UWP nie pozwala na robienie takich rzeczy jak dostęp do Process.GetCurrentProcess().

Potencjalnie mógłbyś:

  • zdekompilować tę bibliotekę i spróbować to naprawić ręcznie;
  • zapytać Oracle?;
  • możesz pomyśleć o skorzystaniu z komunikacji z zewnętrznym procesem i on zajmie się komunikacją z bazą danych, a twoja aplikacja będzie to tylko wyświetlać: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/;
  • napisać zewnętrzne API i to ono się będzie komunikować z bazą.

Wrzucenie takiej aplikacji do Store jest nieco bardziej uciążliwe, ale się da. Nie wiem czy zadziała na HoloLens, na pewno nie zadziała na Xbox, nie wiem jak będzie działać na WoA (Windows on ARM).

0

Tak, mam na .Net core. Gdy chciałem użyć Oracle.ManagedDataAccess to sypało mi błędem o niezgodności.

0
Ktos napisał(a):

Jak tak zajrzałem do tej biblioteki, to jest w niej konstruktor public CustomConfigFileReader(bool bIsManaged = false), który wywołuje GetProcessAndEnvInfo(), która robi trochę dziwnych rzeczy:

[SecurityPermission(SecurityAction.Assert, UnmanagedCode=true)]
        private static void GetProcessAndEnvInfo()
        {
            ConfigBaseClass.CurrentProcess = Process.GetCurrentProcess();
            ConfigBaseClass.m_recoveryServiceHost = Environment.MachineName;
            if (string.Compare(ConfigBaseClass.CurrentProcess.ProcessName, "DOTNET", true) != 0)
            {
                ConfigBaseClass.ApplicationName = ConfigBaseClass.CurrentProcess.ProcessName;
                ConfigBaseClass.CoreRunTimeExt = "exe";
                return;
            }
            ConfigBaseClass.ApplicationName = Assembly.GetEntryAssembly().GetName().Name;
            ConfigBaseClass.CoreRunTimeExt = "dll";
        }

Biblioteka nie wykorzystuje tego potem do niczego super istotnego - głównie do nazywania różnych rzeczy, albo znalezienia ścieżki zapisu pliku śledzenia - a przynajmniej tak by wynikało z mojego pobieżnego przeszukania.

Tutaj najpewniej jest rzucany ten wyjątek, bo UWP nie pozwala na robienie takich rzeczy jak dostęp do Process.GetCurrentProcess().

Potencjalnie mógłbyś:

  • zdekompilować tę bibliotekę i spróbować to naprawić ręcznie;
  • zapytać Oracle?;
  • możesz pomyśleć o skorzystaniu z komunikacji z zewnętrznym procesem i on zajmie się komunikacją z bazą danych, a twoja aplikacja będzie to tylko wyświetlać: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/;
  • napisać zewnętrzne API i to ono się będzie komunikować z bazą.

Wrzucenie takiej aplikacji do Store jest nieco bardziej uciążliwe, ale się da. Nie wiem czy zadziała na HoloLens, na pewno nie zadziała na Xbox, nie wiem jak będzie działać na WoA (Windows on ARM).

Najbardziej pasowałoby mi skorzystanie z Api więc pewnie pójdę w tym kierunku. Dzięki,

1 użytkowników online, w tym zalogowanych: 0, gości: 1