Mam projekt biblioteki F #, który używam z projektu sieci web C#. Chciałbym użyć Entity Framework Type Provider w moim projekcie F # i uzyskać ciąg połączenia od Web.config
- ale mam problem z działaniem.Jak mogę uczynić dostawcę typu obiektu Entity przy użyciu pliku konfiguracyjnego środowiska wykonawczego?
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", Pluralize=true>
w czasie projektowania, mam obowiązek mieć plik w projekcie biblioteki F # z ciągu połączenia o nazwie pasującej App.config
.
W czasie wykonywania, wywołując mój kod F # z projektu C#, pojawia się błąd, że nie może zlokalizować pliku "App.config". To mnie zaskakuje, ponieważ spodziewałem się, że w czasie wykonywania użyje po prostu ConfigurationManager.ConnectionStrings
do załadowania ciągu połączenia z aktualnie aktywnego pliku konfiguracyjnego (w przypadku aplikacji internetowej, Web.config
). Jednak wydaje się, że tak nie jest.
Próbowałem dodanie parametru ConfigFile
:
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", ConfigFile="Web.config", Pluralize=true>
Ale to właśnie sprawiło, że skarżą się w czasie projektowania, że nie może znaleźć Web.config
.
Następnie zmieniłem nazwę pliku App.config
w projekcie biblioteki F # na Web.config
i wydaje się, że uzyskałem działające rzeczy. Jednak nie podoba mi się to rozwiązanie. Czy tak naprawdę ma działać? Muszę mieć plik web.config w moim projekcie biblioteki? Co powinienem zrobić, jeśli chciałem użyć tej samej biblioteki z pliku wykonywalnego wiersza poleceń, aw tym środowisku plik konfiguracyjny nosi nazwę AssemblyName.exe.config
?
Zmuszenie mnie do zakodowania nazwy pliku konfiguracyjnego, który może mieć różne nazwy w różnych kontekstach, wydaje się bardzo kruchy i ma kiepski wygląd. Proszę powiedz mi, że czegoś mi brakuje.