2016-10-24 17 views
5

Potrzebuję pomocy! Nie jestem pewien, czy tytuł jest znaczący, więc postaram się wyjaśnić lepiej.Entity Framework - Użyj dynamicznego ciągu połączenia z Oracle Provider

Pracuję na kanciastej stronie internetowej, która używa żądań http do strony internetowej ASPI platformy ASP.NET. Moja baza danych to Oracle. używam Entity Framework (bazy danych First) z zakodowanego na stałe ciągu połączenia (w moim web.config)

<add name="UserConnection" connectionString="DATA SOURCE=ip:port/name;PASSWORD=pwd;PERSIST SECURITY INFO=True;USER ID=usr" 
    providerName="Oracle.ManagedDataAccess.Client" /> 

(wymieniłem prawdziwe infos z IP, port, nazwa; pwd; usr ponieważ nie mogę pokazać im)

Wszystko to działa, ale teraz mój zespół chce, aby móc mieć ten ciąg połączenia Oracle z dynamicznym ID użytkownika i hasło

celem jest, aby zalogować się na moim kątowej aplikacji z poświadczenia jednego użytkownika i połączyć się z O racle DB z tymi samymi referencjami. Dlatego nie mogę już używać tego zakodowanego ciągu połączenia. (Po utworzeniu użytkowników są zarówno w db tabeli użytkowników i tabeli użytkowników Oracle)

Starałem się stworzyć kolejny konstruktora dla mojego db: Klasa Dbcontext, dając ciąg połączenia w: podstawy() Pierwszy parametr:

publicznych częściowe klasy db: DbContext {

db publicznych (connectionString ciąg znaków): podstawa (connectionString) {}

...}

gdzie connectionString jest taki sam kawałek, który jest w moim web.config: "Źródło danych = ip: port/nazwa; Password = pwd; PERSIST SECURITY INFO = True; USER ID = usr"

Testowanie to dało mi to błąd:

„dostarczony SQLConnection nie określa katalog lub attachdbfilename początkową wyrocznię”

myślę, że to nie działa tam, bo nie daję providerName ("Oracle.ManagedDataAccess.Client ") w pierwszym parametrze podstawowym, ale nie znalazłem konstruktora, który akceptuje drugi parametr dla parametru providerName.

Próbowałem też tak:

db publicznych (connectionString ciąg znaków): podstawa (nowa OracleConnection (connectionString)) {}

ale Visual Studio daje mi ten błąd:

"Erreur CS1503 Argument 1: konwersja niemożliwa de 'Oracle.ManagedDataAccess.Client.OracleConnection' en 'System.Data.Entity.Infrastructure.DbCompiledModel'"

Nie wiem, czym jest DbCompiledModel, może to jest kluczem do tego, a może robię coś zupełnie nie tak.

Próbowałem również edytować ciąg połączenia web.config, aby zmienić użytkownika i hasło i użyć domyślnego konstruktora db, który używa tego ciągu połączenia, ale edycja tego pliku nie robi tego, co chcę: ciąg połączenia jest edytowany tylko po żądanie db zostało zakończone i ponownie załaduje aplikację.

Mam pojęcie, że byłoby super, jestem trochę zagubiony, właśnie zacząłem robić aplikację BackEnd (jestem na stażu), robiłem tylko FrontEnd wcześniej.

Dzięki za przeczytanie, to trochę za długo. Nie mogę znaleźć co szukałem z udanych wyników na forach więc spytać sam

Sonny

Odpowiedz

3

Można ustawić dynamicznie new OracleConnection, ale trzeba także ustawić contextOwnsConnection do true. Ten rozwiązać błąd:

"Erreur CS1503 Argument 1: konwersja niemożliwe de 'Oracle.ManagedDataAccess.Client.OracleConnection' en 'System.Data.Entity.Infrastructure.DbCompiledModel'"

public partial class Entities : DbContext 
    { 
     public Entities() 
      : base(new OracleConnection("DATA SOURCE=Server; PASSWORD=123;USER ID=SYSTEM"), true) 
     { 

     } 
     } 
+0

Wielkie dzięki ! Dokładnie tego potrzebowałem! –

Powiązane problemy