Почему Entity Framework не читает из исходного конфигурационного файла сборки? Разве это невозможно? Зачем?

Относительно этого ответа: тут

Кажется, Entity Framework берет свойство строки соединения из файла конфигурации проекта запуска, а не из файла конфигурации проекта, на который ссылается.

Почему это? Это (несколько странное) соглашение? Есть ли какие-либо аргументы в пользу этого решения?

Или просто невозможно, чтобы DLL имела доступный файл конфигурации?

1 ответ

Почему это?

Конфигурационный файл где-то предназначен для конечных пользователей для настройки приложения. Наличие нескольких конфигурационных файлов быстро становится запутанным, если они не имеют очень четко разделенного использования.

Строки подключения и аналогичные элементы конфигурации всегда попадают в .exe.config (или web.config), поэтому администраторы должны искать и поддерживать эту информацию.

Таким образом, в этом нет ничего странного. Единственная странная вещь - это инструмент EF, создающий app.config в проекте библиотеки классов (но тогда, где еще это можно сказать: в решении может не быть исполняемого проекта: или может быть несколько).

Или просто невозможно, чтобы DLL имела доступный файл конфигурации?

Вы можете использовать типы сборки System.Configuration для открытия и обработки произвольного файла в качестве файла конфигурации, поэтому это возможно. Но ни одно из предположений центральной конфигурации (например, передача имени строки конфигурации, а не самой строки конфигурации, в конструктор EF) будет работать. См. Этот ответ для получения дополнительной информации.

licensed under cc by-sa 3.0 with attribution.