У меня есть проект библиотеки F#, который я использую из веб-проекта C#. Я хотел бы использовать Entity Framework Type Provider в моем проекте F # и получить строку подключения из Web.config
, но у меня возникли проблемы с его работой.
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", Pluralize=true>
Во время разработки мне необходимо иметь файл App.config
в проекте библиотеки F# со строкой подключения, имеющей соответствующее имя.
Во время выполнения при вызове моего кода F# из веб-проекта C# я получаю сообщение об ошибке, что не может найти файл App.config. Это меня удивляет, потому что я ожидал, что во время выполнения он просто будет использовать ConfigurationManager.ConnectionStrings
для загрузки строки подключения из текущего активного файла конфигурации (в случае веб-приложения Web.config
). Однако, похоже, это не так.
Я попытался добавить параметр ConfigFile
:
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", ConfigFile="Web.config", Pluralize=true>
Но это только заставило его жаловаться во время разработки, что он не может найти Web.config
.
Затем я переименовал файл App.config
в проекте библиотеки F# в Web.config
, и, похоже, все заработало. Тем не менее, я беспокоюсь об этом решении. Это действительно так, как это должно работать? У меня должен быть файл web.config в моем проекте библиотеки? Что бы я сделал, если бы хотел использовать ту же библиотеку из исполняемого файла командной строки, и в этой среде файл конфигурации называется AssemblyName.exe.config
?
Принуждение меня к жесткому кодированию имени файла конфигурации, который может иметь разные имена в разных контекстах, кажется очень хрупким и плохим дизайном. Пожалуйста, скажите мне, что я что-то упустил.